または、GoogleGuavaプロジェクトを使用できます
Googleguavaマルチマップと関数を使用したGroupByの実装
これは、google guava MultimapandFunctionを使用してコレクションの機能のようにグループを作成する1つの方法です。
コードは単純で、の index
メソッドを使用Multimap
してデータをグループ化します。ここでは、2列を使用してデータを部門ごとにグループ化します。
サンプル出力
キー=開発
1:グレッグ
3:ローマ
キー=サポート
2:レオ
4:ジョブビー
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
public class GroupByMultimap {
public static void main(String[] args) {
Object[] o1 = new Object[] { 1, "Greg", "Dev" };
Object[] o2 = new Object[] { 2, "Leo", "Support" };
Object[] o3 = new Object[] { 3, "Roman", "Dev" };
Object[] o4 = new Object[] { 4, "Jobby", "Support" };
List<Object[]> rows = Lists.newArrayList(o1, o2, o3, o4);
Multimap<String, Object[]> grouped = Multimaps.index(rows,
new Function<Object[], String>() {
@Override
public String apply(Object[] item) {
return (String) item[2];
}
});
Iterator<String> keyIterator = grouped.asMap().keySet().iterator();
while (keyIterator.hasNext()) {
String key = keyIterator.next();
System.out.println("key = " + key);
Collection<Object[]> dataRows = grouped.get(key);
for (Object[] o : dataRows) {
System.out.println(String.format(" %d : %s", o[0], o[1]));
}
}
}
}