package com.w11k.lsql.utils; import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.w11k.lsql.Row; import java.util.List; import java.util.Map; public class RowUtils { public static <K> Map<K, List<Row>> groupRowsByKey(List<? extends Row> rows, Function<Row, K> keyFunction) { Map<K, List<Row>> map = Maps.newHashMap(); for (Row row : rows) { K keyValue = keyFunction.apply(row); if (!map.containsKey(keyValue)) { map.put(keyValue, Lists.<Row>newLinkedList()); } map.get(keyValue).add(row); } return map; } public static <K> Map<K, Row> groupRowsByUniqueKeyIgnoreDuplicates(List<? extends Row> rows, Function<Row, K> keyFunction) { Map<K, Row> map = Maps.newHashMap(); for (Row row : rows) { K keyValue = keyFunction.apply(row); map.put(keyValue, row); } return map; } }