查询出List中的重复数据

时间:2025-03-10 10:49:16
import com.alibaba.fastjson.JSON; import com.king.science.dto.Student; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author xf * @version 1.0.0 * @ClassName ListTest * @Description TODO list查询重复数据 * @createTime 2020.09.10 10:03 */ public class ListTest { public static void main(String[] args) { //创建一个list用来测试 List<Student> testList = new ArrayList<Student>(); Student student = new Student(); Student student2 = new Student(); Student student3 = new Student(); student.setStuName("张二"); student2.setStuName("张2"); student3.setStuName("张2"); testList.add(student); testList.add(student2); testList.add(student3); List<Student> repeatList = new ArrayList<Student>();//用于存放重复的元素的list // 第一种方法:两个循环 for (int i = 0; i < testList.size() - 1; i++) { for (int j = testList.size() - 1; j > i; j--) { if (testList.get(j).getStuName().equals(testList.get(i).getStuName())) { repeatList.add(testList.get(j));//把相同元素加入list(找出相同的) testList.remove(j);//删除重复元素 } } } for(Student s : repeatList){ System.out.println("使用方法一,相同数据:" + s.getStuName()); } //第二种方法:利用() Map<String, Integer> map = new HashMap<>(); for (Student s : testList) { //1:() 检测key是否重复 if (map.containsKey(s.getStuName())) { Student student1 = new Student(); student1.setStuName(s.getStuName()); repeatList.add(student1);//获取重复的学生名称并存放到新的list中 Integer num = map.get(s.getStuName()); map.put(s.getStuName(), num + 1); } else { map.put(s.getStuName(), 1); } } System.out.println("使用方法二,相同对象:"+JSON.toJSONString(repeatList)); //提取出list对象中某个字段的所有值 List<String> names = repeatList.stream().map(p -> p.getStuName()).collect(Collectors.toList()); System.out.println("使用方法二,相同数据:"+names); } }