zl程序教程

您现在的位置是:首页 >  Javascript

当前栏目

集合按字段排序,单多属性去重

2023-04-18 14:22:52 时间

// 实体类
package com.example.listsorttest.collectionsort;
import lombok.Data;
@Data
public class Student {
private String name;
private int age;
private String code;

public Student(String name, int age, String code) {
    this.name = name;
    this.age = age;
    this.code = code;
}

}
// 业务功能代码
package com.example.listsorttest.collectionsort;
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;
public class ListSortTest {
Student s1 = new Student(“张三”,16,“1”);
Student s2 = new Student(“张大”,17,“1”);
Student s3 = new Student(“张三”,19,“1”);
Student s4 = new Student(“张三”,16,“1”);
Student s5 = new Student(“张五”,16,“1”);
// 按字段排序
@Test
public void test1() {
List list = new ArrayList<>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);

    List<String> lst = Arrays.asList("张五","张大","张三");
    list.sort(Comparator.comparingInt((o)->lst.indexOf(o.getName())));
    System.out.println(list.size() +"-");
    System.out.println(list);
}
// 多属性去重
@Test
public void test2() {
    List<Student> list = Arrays.asList(s1,s2,s3,s4,s5);
    Set<Student> set = new TreeSet<>(Comparator.comparing(o->(o.getName())+""+(o.getAge())));
    set.addAll(list);
    ArrayList<Student> students = new ArrayList<>(set);
    students.forEach(System.out::println);
    System.out.println("==========================");
    List<String> collect = students.stream().map(Student::getName).distinct().collect(Collectors.toList());
    System.out.println(collect);
}
// 单属性去重
@Test
public void test3() {
    List<Student> list = Arrays.asList(s1,s2,s3,s4,s5);
    Set<Student> set = new TreeSet<>(Comparator.comparing(Student::getName));
    set.addAll(list);
    ArrayList<Student> students = new ArrayList<>(set);
    students.forEach(System.out::println);
    System.out.println("=======================");
    //list取出map集合中某一元素集合
    List<String> collect = students.stream().map(Student::getName).collect(Collectors.toList());
    System.out.println(collect);
}
// list属性按对象属性排序
@Test
public void test4() {
    List<Student> list = Arrays.asList(s1,s2,s3,s4,s5);
    // 字段排序
    List<String> lst = Arrays.asList("张五","张大","张三");
    list.sort(Comparator.comparing(o->lst.indexOf(o.getName())));
    System.out.println(list);
}

}