意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

体系Java工程师2022版含源码ppt

来源:恒创科技 编辑:恒创科技编辑部
2024-01-27 14:01:59
download:体系Java工程师2022版含源码ppt

Java中运用比拟器处理依照特定的字符串次第排序List

引言
今天工作需求中,有一个小需求,要依照某一个特定的次第排列一个List。

举例:


体系Java工程师2022版含源码ppt

原始的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 rightListHe = new ArrayList<>();
    rightListHe.add("rightId333");
    rightListHe.add("rightId111");
    rightListHe.add("rightId222");
    // 中心比拟器,经过该indexOf 找到下标
    Collections.sort(rightListMe, new Comparator() {
        @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的问题,希望能够给大家一些启示,而且特别适用于针对依照某些特殊次第去排列对应的数据,比方产品相关的一些适用场景,要引荐什么的。

上一篇: 【设计模式】Java设计模式 - 反射机制 下一篇: 手机怎么远程登录云服务器?