好的 这样我看的有点乱 我问一个新问题,如何将list<A> 根据A里面name属性的不同分成多个list,再把这些list分别根据A里面time属性大小排序,最后再把这些list组合成一个list
时间: 2023-08-16 07:08:15 浏览: 74
可以使用HashMap来实现根据name属性分组的功能,然后再对每个分组内的list根据time属性大小排序,最后将这些list组合成一个新的list。
具体实现步骤如下:
1. 遍历原始list,将每个元素按照name属性的值放入对应的分组中。
```
HashMap<String, List<A>> map = new HashMap<>();
for (A a : list) {
List<A> group = map.get(a.getName());
if (group == null) {
group = new ArrayList<>();
map.put(a.getName(), group);
}
group.add(a);
}
```
2. 对每个分组内的list进行排序,可以使用Collections.sort()方法。
```
for (List<A> group : map.values()) {
Collections.sort(group, new Comparator<A>() {
@Override
public int compare(A a1, A a2) {
return a1.getTime().compareTo(a2.getTime());
}
});
}
```
3. 将所有分组内的list组合成一个新的list。
```
List<A> result = new ArrayList<>();
for (List<A> group : map.values()) {
result.addAll(group);
}
```
最终得到的result即为根据name属性分组并且根据time属性排序后的新list。
阅读全文