陷入了以下问题。我从数据库中填充了一个ArrayList,如下所示。但发现我需要根据名称对列表进行分组(如果第一个列表中的其他两个值与第二个列表匹配)。分组后,我需要按升序对名称进行排序。我无法找到解决方案。我应该如何迭代它,对名称进行分组和排序?
VerDetail(0)
日期: 2016年8月3日 类型:收入 姓名:汤姆
VerDetail(1)
2016年8月3日 SSN 汤姆
VerDetail(2)
2016年8月3日 收入 本
VerDetail(3)
2016年8月3日 SSN 本
VerDetail(4)
2016年8月3日 收入 千斤顶
VerDetail(5)
2016年8月3日 SSN 千斤顶
我希望我的列表按名称分组,如下所示
VerDetail(0)
2016年8月3日 收入 本 插口 汤姆
VerDetail(1)
2016年8月3日 SSN 本 插口 汤姆
答案 0 :(得分:0)
通过使用集合的sort()方法,您可以通过分组对其进行排序。
public class SortTest {
@Test
public void test() {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(1);
System.out.println("Unsorted: " + list);
Collections.sort(list);
System.out.println("Sorted: " + list);
}
}
Unsorted: [1, 2, 3, 4, 1]
Sorted: [1, 1, 2, 3, 4]
资源链接: How to group elements in ArrayList<CustomObject>
使用Collectors类和流,您可以这样做:
Map<String, List<Person>> mapByName = allPeople.stream()
.collect(Collectors.groupingBy(Person::getName));