从 lambda 表达式进行排序和子列表
我有一个包含以下元素的数组列表:
List<Record> list = new ArrayList<>();
list.add(new Record(3, "32"));
list.add(new Record(4, "42"));
list.add(new Record(1, "12"));
list.add(new Record(1, "11"));
list.add(new Record(2, "22"));
list.add(new Record(5, "52"));
list.add(new Record(5, "53"));
list.add(new Record(5, "51"));
记录是一个简单的 POJO,具有 ID 和名称
我想对列表做这些。
-
创建一个像这样的地图,有一个键是id和更苗条的键添加为列表。我已经这样做了。
Map<Integer, List<Record>>
Map<Integer, List<Record>> map = list.stream() .collect(Collectors.groupingBy(Record::getId, HashMap::new, Collectors.toList()));
-
现在我想按名称对列表进行排序,并在地图内提供限制
map.forEach((k, v) -> v.stream().sorted(Comparator.comparing(Record::getName))); map.forEach((k, v) -> map.put(k, v.subList(0, Math.min(**limit**, v.size()))));
我已经像上面一样尝试过,看起来这不是一个好方法。任何人都可以建议更好的方法吗?