加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:25:04 所属栏目:Java 来源:网络整理
导读:我正在执行排序操作,所以我正在使用java spring boot,并且正在使用当前按排序的流 排序代码是:- projectResponse.setDetails(v.stream() .sorted(Comparator.comparing(StateResponse::getState) .thenComparing(Comparator.comparing(NameResponse::getNam

我正在执行排序操作,所以我正在使用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())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读