isa*_*niu 5 java group-by arraylist data-structures
我创建了一个如下所示的 Array 类型的 ArrayList,
ArrayList<Object[]> csvArray = new ArrayList<Object[]>();
Run Code Online (Sandbox Code Playgroud)
如您所见,ArrayList 的每个元素都是一个数组,如 {Country, City, Name, Age}。
现在我想对国家和城市(组合)进行“分组” ,然后取每个国家+城市的平均年龄。
我可以知道实现这一目标的最简单方法是什么吗?或者你们有建议使用比 ArrayList 更好的数据结构来满足这个“分组依据”和聚合要求?
非常感谢您的回答。
小智 6
您将在 Java 8 中获得很多选项。
例子
Stream<Person> people = Stream.of(new Person("Paul", 24), new Person("Mark",30), new Person("Will", 28));
Map<Integer, List<String>> peopleByAge = people
.collect(groupingBy(p -> p.age, mapping((Person p) -> p.name, toList())));
System.out.println(peopleByAge);
Run Code Online (Sandbox Code Playgroud)
如果你可以使用 Java 8 并且没有使用数据结构的具体原因,你可以通过下面的教程
http://java.dzone.com/articles/java-8-group-collections
您可以使用 magicwerk.org 的布朗尼收藏库(http://www.magicwerk.org/page-collections-overview.html)
他们提供适合您要求的密钥列表。(http://www.magicwerk.org/page-collections-examples.html)