有趣生活

当前位置:首页>科技>字符串排序javaJava中使用比较器解决按照特定的字符串顺序排序List

字符串排序javaJava中使用比较器解决按照特定的字符串顺序排序List

发布时间:2026-07-21阅读(1)

导读引言今天工作需求中,有一个小需求,要按照某一个特定的顺序排列一个List。举例:原始的List中存在3个String元素原始List:python,Java....引言

今天工作需求中,有一个小需求,要按照某一个特定的顺序排列一个List。

举例:

原始的List 中存在3个String 元素

  • 原始List : python,Java,C

现在需要按照另一个顺序排序

  • 要求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) { // rightListMe 原始要求的类 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); // rightListHe 特定顺序的类 List<String> rightListHe = new ArrayList<>(); rightListHe.add("rightId333"); rightListHe.add("rightId111"); rightListHe.add("rightId222"); // 核心比较器,通过该indexOf 找到下标 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 输出结果

rightId333rightId111rightId222

可以看到代码原来是 rightId111,rightId222,rightId333的顺序,已经排序如上图所示了。

结尾

按照上述的方案就可以解决List 按照特定的字符串顺序排序list的问题,希望可以给大家一些启发,而且特别适用于针对按照某些特殊顺序去排列对应的数据,比如产品相关的一些适用场景,要推荐什么的。

作者介绍
  • 某大厂高级软件工程师,代码爱好者
  • 定期分享技术相关,热点实时,计算机实用技巧
  • 有问题可在评论区回复或者联系我,用专业,程序员的思维带给你不一样的认知

欢迎点赞,关注博主,未来会有更多知识解答,有问题可以评论区讨论,尽全力帮大家解答。

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图