如何使用Java 8对Map<String, String>
中的List
进行排序?Map包含一个名为last_name
的键,与之关联的值可能是null
。我不知道该怎么做,因为下面的代码会导致编译器错误:
List<Map<String, String>> peopleList = ...
peopleList.sort(Comparator.comparing(Map::get, Comparator.nullsLast(Comparator.naturalOrder())));
使用匿名类是唯一的方法吗?
请注意,我不是尝试对列表中的每个Map进行排序。我想根据每个Map中的键对列表本身进行排序。
6条答案
按热度按时间rkkpypqq1#
看起来你可以像这样重写代码
7uzetpgm2#
由于您的
peopleList
可能包含null
,而Map::key
可能具有null值,因此您可能需要nullsLast
两次:cbwuti443#
这应该符合你的要求。
如果你想处理空指针,试试这个“老式”的解决方案:
如果您希望
null
值在前或在后,请切换1
和-1
。为了彻底起见,我添加了有用测试用例的生成器:
rslzwgfq4#
您可以重写Collection的de compare方法。下面是一个例子:https://www.mkyong.com/java8/java-8-lambda-comparator-example/
您必须比较对象的last_name,并且不要忘记正确处理null。
qv7cva1a5#
pprl5pva6#
试试这个:
按键:
按值: