一:(Integer)o1在前,o2在後是正序,o1在後,o2在前是倒序
public static void main(String[] args) {
List<Integer> integers = new ArrayList<Integer>() {{
add(5);
add(2);
add(1);
add(1);
add(3);
add(4);
add(7);
}};
/**o1在前,o2在後是正序,o1在後,o2在前是倒序 */
List<Integer> list = integers.stream().sorted(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
}).collect(Collectors.toList());
System.err.println(list.toString());
}
o1 - o2:[1, 1, 2, 3, 4, 5, 7]
o2 - o1:[7, 5, 4, 3, 2, 1,1]
二:(Object)o1在前,o2在後是正序,o1在後,o2在前是倒序
@Data
@Accessors(chain = true)
public class Person {
private String name;
private Integer age;
private String idCard;
}
public static void main(String[] args) {
List<Person> peoples = new ArrayList<Person>() {{
add(new Person().setName("張三").setAge(24));
add(new Person().setName("李四").setAge(30));
add(new Person().setName("王五").setAge(18));
add(new Person().setName("黃七").setAge(10));
}};
/**o1在前,o2在後是正序,o1在後,o2在前是倒序 */
List<Person> list = peoples.stream().sorted(new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
}).collect(Collectors.toList());
System.err.println(list.toString());
}
o1.getAge() - o2.getAge():[Person(name=黃七, age=10, idCard=null), Person(name=王五, age=18, idCard=null), Person(name=張三, age=24, idCard=null), Person(name=李四, age=30, idCard=null)]
o2.getAge() - o1.getAge():[Person(name=李四, age=30, idCard=null), Person(name=張三, age=24, idCard=null), Person(name=王五, age=18, idCard=null), Person(name=黃七, age=10, idCard=null)]
三:(Map的java8處理方式)o1在前,o2在後是正序,o1在後,o2在前是倒序
public static void main(String[] args) {
List<Map<String,Object>> maps = new ArrayList<Map<String,Object>>() {{
add(new HashMap<String,Object>(){{
put("age",22);
put("name","張三");
}});
add(new HashMap<String,Object>(){{
put("age",35);
put("name","李四");
}});
add(new HashMap<String,Object>(){{
put("age",17);
put("name","王五");
}});
add(new HashMap<String,Object>(){{
put("age",10);
put("name","黃七");
}});
}};
/**o1在前,o2在後是正序,o1在後,o2在前是倒序 */
List<Map<String,Object>> list = maps.stream().sorted(new Comparator<Map<String,Object>>() {
@Override
public int compare(Map o1, Map o2) {
return (Integer) o1.get("age") - (Integer)o2.get("age");
}
}).collect(Collectors.toList());
System.err.println(list.toString());
}
(Integer) o1.get("age") - (Integer)o2.get("age"):[{name=黃七, age=10}, {name=王五, age=17}, {name=張三, age=22}, {name=李四, age=35}]
(Integer) o2.get("age") - (Integer)o1.get("age"):[{name=李四, age=35}, {name=張三, age=22}, {name=王五, age=17}, {name=黃七, age=10}]
四:(Collections的list<Map<String,Object>>中Integer的排序)
public static void main(String[] args) {
List<Map<String,Object>> maps = new ArrayList<Map<String,Object>>() {{
add(new HashMap<String,Object>(){{
put("age",22);
put("name","張三");
}});
add(new HashMap<String,Object>(){{
put("age",35);
put("name","李四");
}});
add(new HashMap<String,Object>(){{
put("age",17);
put("name","王五");
}});
add(new HashMap<String,Object>(){{
put("age",10);
put("name","黃七");
}});
}};
/**o1在前,o2在後是正序,o1在後,o2在前是倒序 */
Collections.sort(maps, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
return (Integer) o1.get("age")-(Integer)o2.get("age");
}
});
System.err.println(maps.toString());
}
(Integer) o1.get("age") - (Integer)o2.get("age"):[{name=黃七, age=10}, {name=王五, age=17}, {name=張三, age=22}, {name=李四, age=35}]
(Integer) o2.get("age") - (Integer)o1.get("age"):[{name=李四, age=35}, {name=張三, age=22}, {name=王五, age=17}, {name=黃七, age=10}]
五:Collections對list<Map<String,Object>>中的String類型日期的排序
public static void main(String[] args) {
List<Map<String,Object>> maps = new ArrayList<Map<String,Object>>() {{
add(new HashMap<String,Object>(){{
put("age",22);
put("name","張三");
put("date","2020-01-30");
}});
add(new HashMap<String,Object>(){{
put("age",35);
put("name","李四");
put("date","2020-01-18");
}});
add(new HashMap<String,Object>(){{
put("age",17);
put("name","王五");
put("date","2020-01-15");
}});
add(new HashMap<String,Object>(){{
put("age",10);
put("name","黃七");
put("date","2020-01-21");
}});
}};
/**o1在前,o2在後是正序,o1在後,o2在前是倒序 */
Collections.sort(maps, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
String date1 = (String) o1.get("date");
String date2 = (String) o2.get("date");
return date2.compareTo(date1);
}
});
System.err.println(maps.toString());
}
date2.compareTo(date1):[{date=2020-01-30, name=張三, age=22}, {date=2020-01-21, name=黃七, age=10}, {date=2020-01-18, name=李四, age=35}, {date=2020-01-15, name=王五, age=17}]
date1.compareTo(date2);:[{date=2020-01-15, name=王五, age=17}, {date=2020-01-18, name=李四, age=35}, {date=2020-01-21, name=黃七, age=10}, {date=2020-01-30, name=張三, age=22}]