关于go:深入Go底层原理重写Redis中间件实战完整无密

31次阅读

共计 1528 个字符,预计需要花费 4 分钟才能阅读完成。

download:深刻 Go 底层原理,重写 Redis 中间件实战(残缺无密)

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

引言
明天工作需要中,有一个小需要,要按照某一个特定的次序排列一个 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 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 的问题,心愿可能给大家一些启发,而且特地实用于针对按照某些非凡次序去排列对应的数据,比如产品相干的一些实用场景,要推荐什么的。

正文完
 0