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布局,对于数组和对象的理解和运用
每天一个JS 小demo之日历制作。主要知识点:日期函数和对于函数封装的灵活运用