如果同时存在单个变量名称和数字,则如何在Java中进行排序

前端之家收集整理的这篇文章主要介绍了如果同时存在单个变量名称和数字,则如何在Java中进行排序 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在执行排序操作,所以我正在使用java spring boot,并且正在使用当前按排序的流

排序代码是:-

projectResponse.setDetails(v.stream()
                    .sorted(Comparator.comparing(StateResponse::getState)
                            .thenComparing(Comparator.comparing(NameResponse::getName)))
                    .collect(Collectors.toList()));

首先按州排序,然后按名称排序.

我的名字的值类似:“ name-98”,“ name-99”,“ name-100”
因此,当它进行排序时,它会正确排序到99,但当排序为100时,它是第一个排序数字,然后从100,101,102开始排序是正确的,并且当no越过999,然后从1000,1001正确排序时,这种情况就会再次出现.克服它的最佳解决方案是什么?

最佳答案
使用自定义比较器可以对数字进行数字排序,同时对文本进行字母排序也很有帮助.这通常称为“自然排序”.这是执行此操作的一个实现:http://www.davekoelle.com/alphanum.html.

在流操作中使用它:

thenComparing(NameResponse::getName,new AlphanumComparator())

猜你在找的Java相关文章