public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) { final int n = valueSet.map.keySet().size(); int extra = valueSet.containsNull ? 1 : 0; Comparable[] codeValues = valueSet.map.keySet().toArray(new Comparable[n + extra]); Arrays.sort(codeValues, 0, n); ColumnLoader.ValueSet codeValueSet = new ColumnLoader.ValueSet(int.class); final List<Comparable> list = permuteList(valueSet.values, sources); for (Comparable value : list) { int code; if (value == null) { code = n; } else { code = Arrays.binarySearch(codeValues, value); assert code >= 0 : code + ", " + value; } codeValueSet.add(code); } Object codes = representation.freeze(codeValueSet, null); return Pair.of(codes, codeValues); }
public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) { final int n = valueSet.map.keySet().size(); int extra = valueSet.containsNull ? 1 : 0; Comparable[] codeValues = valueSet.map.keySet().toArray(new Comparable[n + extra]); Arrays.sort(codeValues, 0, n); ColumnLoader.ValueSet codeValueSet = new ColumnLoader.ValueSet(int.class); final List<Comparable> list = permuteList(valueSet.values, sources); for (Comparable value : list) { int code; if (value == null) { code = n; } else { code = Arrays.binarySearch(codeValues, value); assert code >= 0 : code + ", " + value; } codeValueSet.add(code); } Object codes = representation.freeze(codeValueSet, null); return Pair.of(codes, codeValues); }
/** Freezes the contents of this value set into a column, optionally * re-ordering if {@code sources} is specified. */ ArrayTable.Column freeze(int ordinal, int[] sources) { ArrayTable.Representation representation = chooseRep(ordinal); final int cardinality = map.size() + (containsNull ? 1 : 0); final Object data = representation.freeze(this, sources); return new ArrayTable.Column(representation, data, cardinality); }
/** Freezes the contents of this value set into a column, optionally * re-ordering if {@code sources} is specified. */ ArrayTable.Column freeze(int ordinal, int[] sources) { ArrayTable.Representation representation = chooseRep(ordinal); final int cardinality = map.size() + (containsNull ? 1 : 0); final Object data = representation.freeze(this, sources); return new ArrayTable.Column(representation, data, cardinality); }