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