要求List:C++ ,python,Java。
网上大部分的排序都是根据某一个值,比如int,long 等等进行比大小,很少能找到按照特定字符串的资料。传统的代码使用for循环等等也能解决这个问题,但是希望使用比较器的方式解决这个问题,今天就浅浅地研究一下。
经过研究,最好的方式还是着眼于字符串的坐标值来解决这个问题,通过坐标值的比较来完成这个问题。
1 准备实体类
*
@author
fangzhou
*
@date
2022/7/27 11:24 上午
public
class
Right
{
private
String
rightId;
public
String
getRightId
(
) {
return
rightId;
public
void
setRightId
(
String
rightId
) {
this
.
rightId
= rightId;
2 解决方案
public static void main(String[] args) {
List<Right> rightListMe = new ArrayList<>();
Right right = new Right();
right.setRightId("rightId111");
Right right1 = new Right();
right1.setRightId("rightId222");
Right right2 = new Right();
right2.setRightId("rightId333");
rightListMe.add(right);
rightListMe.add(right1);
rightListMe.add(right2);
List<String> rightListHe = new ArrayList<>();
rightListHe.add("rightId333");
rightListHe.add("rightId111");
rightListHe.add("rightId222");
Collections.sort(rightListMe, new Comparator<Right>() {
@Override
public int compare(Right o1, Right o2) {
int index1 = rightListHe.indexOf(o1.getRightId());
int index2 = rightListHe.indexOf(o2.getRightId());
return (index1 == -1 || index2 == -1) ? (index2 - index1) : (index1 - index2);
for (Right s : rightListMe) {
System.out.println(s.getRightId());
3 输出结果
rightId333
rightId111
rightId222
可以看到代码原来是 rightId111,rightId222,rightId333的顺序,已经排序如上图所示了。
按照上述的方案就可以解决List 按照特定的字符串顺序排序list的问题,希望可以给大家一些启发,而且特别适用于针对按照某些特殊顺序去排列对应的数据,比如产品相关的一些适用场景,要推荐什么的。
某大厂高级软件工程师,代码爱好者
定期分享技术相关,热点实时,计算机实用技巧
有问题可在评论区回复或者联系我,用专业,程序员的思维带给你不一样的认知
欢迎点赞,关注博主,未来会有更多知识解答,有问题可以评论区讨论,尽全力帮大家解答。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2c792110466d4f6b93c9cdb450ad06a0~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.image)