Java 多字段排序

一、name升序 age升序

   Java中Comparator Interface的排序是升序,即自然排序
  .示例
     List<JSONObject> data0o0o = new ArrayList<>();
    JSONObject data0o0o1 = FASTJSON.newDoc();
    data0o0o1.put("name", "张三");
    data0o0o1.put("age", 10);
    data0o0o1.put("sex", "男");
    data0o0o.add(data0o0o1);

    JSONObject data0o0o2 = FASTJSON.newDoc();
    data0o0o2.put("name", "张三");
    data0o0o2.put("age", 11);
    data0o0o2.put("sex", "男");
    data0o0o.add(data0o0o2);

    JSONObject data0o0o3 = FASTJSON.newDoc();
    data0o0o3.put("name", "李思");
    data0o0o3.put("age", 10);
    data0o0o3.put("sex", "男");
    data0o0o.add(data0o0o3);
  List<JSONObject> bufferData0o0o =data0o0o.stream().sorted(
            Comparator.comparing(doc -> FASTJSON.parse2Doc(FASTJSON.toJSONString(doc)).getString("name"))
                    .thenComparing(doc -> FASTJSON.parse2Doc(FASTJSON.toJSONString(doc)).getIntValue("age"))
    ).collect(Collectors.toList());
    System.out.println(bufferData0o0o);

 .结果: [{"name":"张三","age":10,"sex":"男"}, {"name":"张三","age":11,"sex":"男"}, {"name":"李思","age":10,"sex":"男"}]

二、name升序 age降序

   Java中Comparator Interface的reversed()方法返回一个比较器,该比较器强加此比较器的相反顺序。
   如果您使用array的sort方法,并在应用反向方法后传递此比较器,则它将以相反的顺序对数组进行排序

  .示例
      List<JSONObject> data0o0o = new ArrayList<>();
    JSONObject data0o0o1 = FASTJSON.newDoc();
    data0o0o1.put("name", "张三");
    data0o0o1.put("age", 10);
    data0o0o1.put("sex", "男");
    data0o0o.add(data0o0o1);

    JSONObject data0o0o2 = FASTJSON.newDoc();
    data0o0o2.put("name", "张三");
    data0o0o2.put("age", 11);
    data0o0o2.put("sex", "男");
    data0o0o.add(data0o0o2);

    JSONObject data0o0o3 = FASTJSON.newDoc();
    data0o0o3.put("name", "李思");
    data0o0o3.put("age", 10);
    data0o0o3.put("sex", "男");
    data0o0o.add(data0o0o3);
    List<JSONObject> bufferData0o0o =data0o0o.stream().sorted(
            Comparator.comparing(doc -> FASTJSON.parse2Doc(FASTJSON.toJSONString(doc)).getString("name"))
                    .thenComparing(Comparator.comparing(doc->FASTJSON.parse2Doc(FASTJSON.toJSONString(doc)).getIntValue("age")).reversed())
    ).collect(Collectors.toList());
    System.out.println(bufferData0o0o);
 .结果: [{"name":"张三","age":11,"sex":"男"}, {"name":"张三","age":10,"sex":"男"}, {"name":"李思","age":10,"sex":"男"}]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容