gpt4 book ai didi

Java-8:如何在忽略区分大小写的情况下使用 Map.Entry#comparingByValue 对 Map(基于值)进行排序?

转载 作者:搜寻专家 更新时间:2023-10-31 19:43:22 24 4
gpt4 key购买 nike

我想根据值的字母顺序并忽略大小写对 Map 进行排序,并返回键列表。

 /**
* This method will sort allCostPlanDetailsRows based on Value in <Key,Value> pair
*
* @param sortingOrder_ whether to sort the LinkedHashMap in Ascending order or Descending order
* @return List<String> returns List of costPlanDetailsRowId in sorted order
*/
private List<String> sortCostPlanDetailRows( SortingOrder sortingOrder_ )
{
return _allCostPlanDetailRows
.entrySet()
.stream()
.sorted( sortingOrder_ == SortingOrder.DESC ? Map.Entry.<String, String>comparingByValue(Comparator.nullsFirst(Comparator.naturalOrder())).reversed() : Map.Entry.comparingByValue(Comparator.nullsFirst(
Comparator.naturalOrder())) )
.map( Map.Entry::getKey )
.collect( Collectors.toList() );
}

我怎样才能做到这一点?

注意:如果我可以改进上述代码,欢迎提出建议。

最佳答案

您可以使用 String.CASE_INSENSITIVE_ORDER 而不是使用 naturalOrder 比较器:

return _allCostPlanDetailRows
.entrySet()
.stream()
.sorted( sortingOrder_ == SortingOrder.DESC ? Map.Entry.<String, String>comparingByValue(Comparator.nullsFirst(String.CASE_INSENSITIVE_ORDER)).reversed() : Map.Entry.comparingByValue(Comparator.nullsFirst(
String.CASE_INSENSITIVE_ORDER)) )
.map( Map.Entry::getKey )
.collect( Collectors.toList() );

关于Java-8:如何在忽略区分大小写的情况下使用 Map.Entry#comparingByValue 对 Map(基于值)进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44236063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com