private void process(Object2IntOpenHashMap<String> idMap, Int2ObjectOpenHashMap<IntList> idToRows, Int2ObjectOpenHashMap<String> rowToId, Frame df, List<String> varNames) { for (int i = 0; i < df.rowCount(); i++) { StringBuilder sb = new StringBuilder(); for (int k = 0; k < varNames.size(); k++) { sb.append(k).append(SEP).append(df.getLabel(i, varNames.get(k))).append(SEP); } String key = sb.toString(); idMap.putIfAbsent(key, idMap.size()); int id = idMap.getInt(key); idToRows.putIfAbsent(id, new IntArrayList()); idToRows.get(id).add(i); rowToId.put(i, key); } }