或者你可以使用 Google Guava 项目
使用 Google guava Multimap 和 Function 实现 GroupBy
这是使用 google guava Multimap 和 Function 通过类似功能为集合创建组的一种方法。
代码很简单,我们只需使用 的 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]));
}
}
}
}