List sort运用小demo实战

Posted 栗子~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List sort运用小demo实战相关的知识,希望对你有一定的参考价值。

文章目录

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


List sort 运用小demo实战

废话不多说:

实现的需求是:
首先根据code值进行排序,以A,B,C的顺序进行排序,当code值相等时,以date时间进行排序,时间早的在前面

准备VO:

static class TestA
        private String code ;
        private Date date;

        public String getCode() 
            return code;
        

        public void setCode(String code) 
            this.code = code;
        

        public Date getDate() 
            return date;
        

        public void setDate(Date date) 
            this.date = date;
        
    

准备实现需求的逻辑处理:

    private static final String CODE_A = "A";
    private static final String CODE_B = "B";
    private static final String CODE_C = "C";
/
/-1 时会将数据往前移动,返回1时数据将会往后移动,返回0时数据将不会动
    private static int  sortCode(TestA t1,TestA t2)
        //后一个
        String code1 = t1.getCode();
        //前一个
        String code2 = t2.getCode();
        if (code1.equals(CODE_A))
            return -1;
        else if(code1.equals(CODE_B)&&code2.equals(CODE_C))
            return -1;
        else
            //如果前后code一样,进行时间排序
            return sortDate(t1,t2);
        


    
    private static int  sortDate(TestA t1,TestA t2)
        if (t1.getDate().compareTo(t2.getDate()) < 0) 
            return -1;
         else if (t1.getDate().compareTo(t2.getDate()) > 0) 
            return 1;
         else 
            return 0;
        
    

这里注意一下,返回的int值的含义:
返回 -1 时会将数据往前移动,返回1时数据将会往后移动,返回0时数据将不会动

准备造测试数据:

    private static final  String data = "[\\n" +
            "  \\n" +
            "    \\"code\\":\\"C\\",\\n" +
            "    \\"date\\":\\"2022-10-03\\"\\n" +
            "  ,\\n" +
            "   \\"code\\":\\"B\\",\\n" +
            "    \\"date\\":\\"2022-10-02\\"\\n" +
            "  ,\\n" +
            "   \\"code\\":\\"C\\",\\n" +
            "    \\"date\\":\\"2022-10-01\\"\\n" +
            "  ,\\n" +
            "   \\"code\\":\\"A\\",\\n" +
            "    \\"date\\":\\"2022-10-01\\"\\n" +
            "  \\n" +
            "\\n" +
            "]";
List<TestA> list  = JSON.parseObject(data,new TypeReference<List<TestA>>()
        );

完整的小demo:

package com.yzy.test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import java.util.Date;
import java.util.List;

/**
 * @author yangzhenyu
 * @version 1.0
 * @description:
 * @date 2022/10/10 16:31
 */
public class Test2 

    private static final String CODE_A = "A";
    private static final String CODE_B = "B";
    private static final String CODE_C = "C";

    static class TestA
        private String code ;
        private Date date;

        public String getCode() 
            return code;
        

        public void setCode(String code) 
            this.code = code;
        

        public Date getDate() 
            return date;
        

        public void setDate(Date date) 
            this.date = date;
        
    
    //-1 时会将数据往前移动,返回1时数据将会往后移动,返回0时数据将不会动
    private static int  sortCode(TestA t1,TestA t2)
        //后一个
        String code1 = t1.getCode();
        //前一个
        String code2 = t2.getCode();
        if (code1.equals(CODE_A))
            return -1;
        else if(code1.equals(CODE_B)&&code2.equals(CODE_C))
            return -1;
        else
            //如果前后code一样,进行时间排序
            return sortDate(t1,t2);
        


    
    private static int  sortDate(TestA t1,TestA t2)
        if (t1.getDate().compareTo(t2.getDate()) < 0) 
            return -1;
         else if (t1.getDate().compareTo(t2.getDate()) > 0) 
            return 1;
         else 
            return 0;
        
    

    private static final  String data = "[\\n" +
            "  \\n" +
            "    \\"code\\":\\"C\\",\\n" +
            "    \\"date\\":\\"2022-10-03\\"\\n" +
            "  ,\\n" +
            "   \\"code\\":\\"B\\",\\n" +
            "    \\"date\\":\\"2022-10-02\\"\\n" +
            "  ,\\n" +
            "   \\"code\\":\\"C\\",\\n" +
            "    \\"date\\":\\"2022-10-01\\"\\n" +
            "  ,\\n" +
            "   \\"code\\":\\"A\\",\\n" +
            "    \\"date\\":\\"2022-10-01\\"\\n" +
            "  \\n" +
            "\\n" +
            "]";
    public static void main(String[] args) 
        //排序需求,首先根据code值进行排序,以A,B,C的顺序进行排序,当code值相等时,以date时间进行排序,时间早的在前面
        List<TestA> list  = JSON.parseObject(data,new TypeReference<List<TestA>>()
        );
        //list 排序
        list.sort(Test2::sortCode);
        System.out.println(JSONObject.toJSON(list));

    


运行main方法:

以上是关于List sort运用小demo实战的主要内容,如果未能解决你的问题,请参考以下文章

每天一个JS 小demo之韩雪冬轮播图。主要知识点:html,css布局,对于数组和对象的理解和运用

「小程序JAVA实战」 小程序手写属于自己的第一个demo

每天一个JS 小demo之日历制作。主要知识点:日期函数和对于函数封装的灵活运用

sort的题目运用

Python3基础 list sort 从小(大)到大(小)排序

HarmonyOS实战一JS基础组件switchchart等的使用