@Override public final Map<Record, R> intoMap(Field<?>[] keys) { if (keys == null) keys = new Field[0]; Map<Record, R> map = new LinkedHashMap<Record, R>(); for (R record : this) { RecordImpl key = new RecordImpl(keys); for (Field<?> field : keys) Tools.copyValue(key, field, record, field); if (map.put(key, record) != null) throw new InvalidResultException("Key list " + Arrays.asList(keys) + " is not unique in Result for " + this); } return map; }
@Override public final <E> Map<Record, List<E>> intoGroups(Field<?>[] keys, RecordMapper<? super R, E> mapper) { if (keys == null) keys = new Field[0]; Map<Record, List<E>> map = new LinkedHashMap<Record, List<E>>(); for (R record : this) { RecordImpl key = new RecordImpl(keys); for (Field<?> field : keys) Tools.copyValue(key, field, record, field); List<E> list = map.get(key); if (list == null) map.put(key, list = new ArrayList<E>()); list.add(mapper.map(record)); } return map; }
@Override public final Map<Record, Record> intoMap(Field<?>[] keys, Field<?>[] values) { if (keys == null) keys = new Field[0]; Map<Record, Record> map = new LinkedHashMap<Record, Record>(); for (R record : this) { RecordImpl key = new RecordImpl(keys); RecordImpl value = new RecordImpl(values); for (Field<?> field : keys) Tools.copyValue(key, field, record, field); for (Field<?> field : values) Tools.copyValue(value, field, record, field); if (map.put(key, value) != null) throw new InvalidResultException("Key list " + Arrays.asList(keys) + " is not unique in Result for " + this); } return map; }
@Override public final Map<Record, Result<Record>> intoGroups(Field<?>[] keys, Field<?>[] values) { if (keys == null) keys = new Field[0]; if (values == null) values = new Field[0]; Map<Record, Result<Record>> map = new LinkedHashMap<Record, Result<Record>>(); for (R record : this) { RecordImpl key = new RecordImpl(keys); RecordImpl value = new RecordImpl(values); for (Field<?> field : keys) Tools.copyValue(key, field, record, field); for (Field<?> field : values) Tools.copyValue(value, field, record, field); Result<Record> result = map.get(key); if (result == null) map.put(key, result = new ResultImpl<Record>(configuration(), values)); result.add(value); } return map; }
@Override public final Map<Record, Result<R>> intoGroups(Field<?>[] keys) { if (keys == null) keys = new Field[0]; Map<Record, Result<R>> map = new LinkedHashMap<Record, Result<R>>(); for (R record : this) { RecordImpl key = new RecordImpl(keys); for (Field<?> field : keys) Tools.copyValue(key, field, record, field); Result<R> result = map.get(key); if (result == null) map.put(key, result = new ResultImpl<R>(configuration(), this.fields)); result.add(record); } return map; }