package com.jt.dto;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* User: ldj
* Date: 2022/3/2
* Time: 22:48
* Description: No Description
*/
public class DateListSort {
public static void main(String[] args) {
ArrayList<Date> dates = new ArrayList<>();
dates.add(stringToDate("20230215"));
dates.add(stringToDate("20220302"));
dates.add(stringToDate("19951109"));
dates.add(stringToDate("20501123"));
ArrayList<String> beforeDateStrList = new ArrayList<>();
dates.forEach(date -> beforeDateStrList.add(dateToString(date)));
System.out.println("排序前:" + beforeDateStrList);
ArrayList<String> afterDateStrList = new ArrayList<>();
testSort(dates);//倒序
dates.forEach(date -> afterDateStrList.add(dateToString(date)));
System.out.println("排序后:" + afterDateStrList);
}
//String -> Date
public static Date stringToDate(String dateStr) {
Date date = null;
try {
SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
date = ft.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
//Date -> String
public static String dateToString(Date date) {
SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
return ft.format(date);
}
public static void testSort(List<Date> list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = 1; j < list.size() - i; j++) {
if (list.get(i).before(list.get(i + j))) {
Date empty;
empty = list.get(i);
list.set(i, list.get(i + j));
list.set(i + j, empty);
}
}
}
}
}
续更。。
package com.jt.dto;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* User: ldj
* Date: 2022/3/5
* Time: 18:36
* Description: 根据日期对对象进行倒序
*/
public class ObjectSort {
private static final String NAME = "name";
private static final String AGE = "age";
private static final String BIRTHDAY = "birthday";
public static void main(String[] args) throws JsonProcessingException {
Map<String, Object> linkedHashMap1 = new LinkedHashMap<>();
Map<String, Object> linkedHashMap2 = new LinkedHashMap<>();
Map<String, Object> linkedHashMap3 = new LinkedHashMap<>();
linkedHashMap1.put(NAME, "lili");
linkedHashMap1.put(AGE, 18);
linkedHashMap1.put(BIRTHDAY, "20220329");
linkedHashMap2.put(NAME, "liLei");
linkedHashMap2.put(AGE, 17);
linkedHashMap2.put(BIRTHDAY, "20210329");
linkedHashMap3.put(NAME, "ldj");
linkedHashMap3.put(AGE, 19);
linkedHashMap3.put(BIRTHDAY, "19951109");
//模拟返回数据list
List<Map<String, Object>> objectList = new ArrayList<>();
objectList.add(linkedHashMap3);
objectList.add(linkedHashMap2);
objectList.add(linkedHashMap1);
System.out.println("倒序前:" + new ObjectMapper().writeValueAsString(objectList));
//方法1 ==> 倒序
desSort(objectList);
System.out.println("倒序后:" + new ObjectMapper().writeValueAsString(objectList));
//方法2 ==> 升序
Collections.sort(objectList, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
Date date1 = stringToDate((String) o1.get(BIRTHDAY));
Date date2 = stringToDate((String) o2.get(BIRTHDAY));
return date1.compareTo(date2); //升序
//return date2.compareTo(date1); //降序
}
});
System.out.println("升序后:" + new ObjectMapper().writeValueAsString(objectList));
//函数式接口 lomda表达式写法 ==> 降序
Collections.sort(objectList, (map1, map2) -> {
Date date1 = stringToDate((String) map1.get(BIRTHDAY));
Date date2 = stringToDate((String) map2.get(BIRTHDAY));
return date2.compareTo(date1);
});
System.out.println("降序后:" + new ObjectMapper().writeValueAsString(objectList));
}
//String -> Date
public static Date stringToDate(String dateStr) {
Date date = null;
try {
SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
date = ft.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
//选择排序算法 <before倒序 after升序>
public static void desSort(List<Map<String, Object>> list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = 1; j < list.size() - i; j++) {
if (stringToDate((String) list.get(i).get(BIRTHDAY)).before(stringToDate((String) list.get(i + j).get(BIRTHDAY)))) {
Map<String, Object> empty;
empty = list.get(i);
list.set(i, list.get(i + j));
list.set(i + j, empty);
}
}
}
}
}
参数换成实体类List<Object>同理
package com.jt.dto;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* User: ldj
* Date: 2022/3/6
* Time: 17:42
* Description: No Description
*/
public class ObjectSortByField {
public static void main(String[] args) throws JsonProcessingException {
Users ldj = new Users("ldj", 15, "20220523");
Users zhangHao = Users.builder()
.name("ZhangHao")
.age(18)
.birthday("20220315")
.build();
List<Users> objectList = new ArrayList<>();
objectList.add(ldj);
objectList.add(zhangHao);
System.out.println("排序前:"+new ObjectMapper().writeValueAsString(objectList));
desSort(objectList);
System.out.println("排序后:"+new ObjectMapper().writeValueAsString(objectList));
}
//选择排序算法 <before倒序 after升序>
public static void desSort(List<Users> list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = 1; j < list.size() - i; j++) {
if (list.get(i).getAge() < list.get(i + j).getAge()) {
Object empty = list.get(i);
list.set(i, list.get(i + j));
list.set(i + j, (Users) empty);
}
}
}
}
//String -> Date
public static Date stringToDate(String dateStr) {
Date date = null;
try {
SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
date = ft.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
@Data
@Builder
@AllArgsConstructor
class Users {
private String name;
private Integer age;
private String birthday;
}
续更。。。
package com.jt.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author: ldj
* @Date: 2022/03/02/20:18
* @Description:
*/
public class SortDate {
private static final String NAME = "name";
private static final String AGE = "age";
private static final String BIRTHDAY = "birthday";
public static void main(String[] args) {
Map<String, Object> linkedHashMap1 = new LinkedHashMap<>();
Map<String, Object> linkedHashMap2 = new LinkedHashMap<>();
Map<String, Object> linkedHashMap3 = new LinkedHashMap<>();
linkedHashMap1.put(NAME, "lili");
linkedHashMap1.put(AGE, 18);
linkedHashMap1.put(BIRTHDAY, "20220329");
linkedHashMap2.put(NAME, "liLei");
linkedHashMap2.put(AGE, 17);
linkedHashMap2.put(BIRTHDAY, "20210329");
linkedHashMap3.put(NAME, "ldj");
linkedHashMap3.put(AGE, 19);
linkedHashMap3.put(BIRTHDAY, "19951109");
//模拟返回数据list
List<Map<String, Object>> objectList = new ArrayList<>();
objectList.add(linkedHashMap3);
objectList.add(linkedHashMap2);
objectList.add(linkedHashMap1);
System.out.println("排序前:" + objectList);
List<Map<String, Object>> newList = sortBySteam(objectList);
System.out.print("排序后:" +newList);
}
//流方式排序
public static List<Map<String, Object>> sortBySteam(List<Map<String, Object>> objectList) {
List<Map<String, Object>> newList = objectList.stream().sorted((e1, e2) -> {
Date date1 = stringToDate((String) e1.get(BIRTHDAY));
Date date2 = stringToDate((String) e2.get(BIRTHDAY));
//return date1.compareTo(date2); //升序
return date2.compareTo(date1); //降序
}).collect(Collectors.toList());
return newList;
}
//String -> Date
public static Date stringToDate(String dateStr) {
Date date = null;
try {
SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
date = ft.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
续更。。。。
package com.jt.test;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author: ldj
* @Date: 2022/05/23/17:32
* @Description:
*/
public class ObjectSort {
public static void main(String[] args) {
User lina = new User("lina", 18, new Date());//小
for (int i = 0; i < 100000000; i++) {
i++;
}
User lili = new User("ldj", 17, new Date()); //中
for (int i = 0; i < 100000000; i++) {
i++;
}
User ldj = new User("lili", 15, new Date()); //大
List<User> userList = new ArrayList<>();
userList.add(lina);
userList.add(ldj);
userList.add(lili);
List<User> userList1 = sortBySteam2(userList);
System.out.println(userList1.toString());
}
//流方排序式
public static List<User> sortBySteam1(List<User> objectList) {
List<User> newList = objectList.stream().sorted(((o1, o2) -> {
Date birthday1 = o1.getBirthday();
Date birthday2 = o2.getBirthday();
return birthday2.compareTo(birthday1);
})).collect(Collectors.toList());
return newList;
}
//流方排序式
public static List<User> sortBySteam2(List<User> objectList) {
List<User> newList = objectList.stream().sorted(Comparator.comparing(User::getBirthday).reversed()).collect(Collectors.toList());
return newList;
}
}
@Data
@AllArgsConstructor
class User {
private String name;
private Integer age;
private Date birthday;
}