将listA按照listB排序(listB中不存在的元素拼接在后)

在线运行

核心方法
  public static void sort1(List<String> targetList, List<String> orderList) {
    targetList.sort(((o1, o2) -> {
      int io1 = orderList.indexOf(o1);
      int io2 = orderList.indexOf(o2);
      
      if (io1 != -1) {
        io1 = targetList.size() - io1;
      }
      if (io2 != -1) {
        io2 = targetList.size() - io2;
      }
      return io2 - io1;
    }));
  }
完整代码

import java.util.*;

public class xxtest{

  public static void main(String args[]) {

    List<String> targetList = new ArrayList<String>(Arrays.asList("c", "a", "b"));

    List<String> orderList = new ArrayList<String>(Arrays.asList("a", "b", "c"));

    sort1(targetList, orderList);

    System.out.println("targetList:{}"+ targetList);

  }

  public static void sort1(List<String> targetList, List<String> orderList) {

    targetList.sort(((o1, o2) -> {

      int io1 = orderList.indexOf(o1);

      int io2 = orderList.indexOf(o2);



      System.out.println("before-o1:"+o1);

      System.out.println("before-o2:"+o2);

      System.out.println("before-io1:"+io1);

      System.out.println("before-io2:"+io2);



      if (io1 != -1) {

        io1 = targetList.size() - io1;

      }

      if (io2 != -1) {

        io2 = targetList.size() - io2;

      }



      System.out.println("after-o1:"+o1);

      System.out.println("after-o2:"+o2);

      System.out.println("after-io1:"+io1);

      System.out.println("after-io2:"+io2);

      System.out.println("after-io2-io1:"+ String.valueOf(io2-io1));

      return io2 - io1;

    }));

  }

}

运行过程
list1.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容