Finding the array indices of three specific headers
Both one-for-loop and getIndexOfColumnTypesolutions represent a naive approach: its main drawback is that for each index you need a dedicated variable like indexOfID or indexOfName.

Since you confirm that the header array can be quite large, this also means that you'll need as many variables for indices as there are items in the array.

Of course, there might be more flexible solutions and I see that the first step is already in the original code, supposing that Constant is an enumeration like this:

public enum Constant {
  ID,
  NAME,
  CATEGORY;
}


The index of each column can be mapped with a dedicated EnumMap:

Map&lt;Constant, Integer&gt; indices = new EnumMap&lt;&gt;(Constant.class);


Now this map can be filled with the indices, using a single loop and they will be accessible by the references to the respective Constants:

private void calculateColumnIndices() {
  for (int i = 0; i &lt; header.length; i++) {
    try {
      Constant column = Constant.valueOf(header[i]);
      indices.put(column, i);
    } catch (IllegalArgumentException ex) {
      // handle the exception depending on what you expect to do if the header contains an invalid column name
      // TODO
    }
  }
}


To access the index:

int index = indices.get(Constant.CATEGORY);


P.S. I'd also suggest to rename Constant to something more meaningful, e.g. ColumnName.