• JAVA中List对象去除重复值的方法


      JAVA中List对象去除重复值,大致分为两种情况,一种是List<String>、List<Integer>这类,直接根据List中的值进行去重,另一种是List<User>这种,List中存的是javabean对象,需要根据List中对象的某个值或某几个值进行比较去重。方法如下:

    一、List<String>、List<Integer>对象去重复值。

    这种情况的话,处理起来比较简单,通过JDK1.8新特性stream的distinct方法,可以直接处理。

    1     List<String> list1 = Arrays.asList("a", "b", "c", "a", new String("c"));
    2     list1.stream().distinct().forEach(System.out::println);
    3 
    4     List<Integer> list2 = Arrays.asList(1, 2, 3, 1, new Integer(2));
    5     list2.stream().distinct().forEach(System.out::println);

    二、List<User>对象去重复值。

    这种的话,不能直接比较List中的对象,需要重写bean对象的equals和hashCode方法,然后通过放入Set集合来自动去重,具体例子如下。

    对象实体:

     1 @Data
     2 @AllArgsConstructor
     3 public class User {
     4     private String id;
     5     private String name;
     6     private int age;
     7 
     8     public boolean equals(Object obj) {
     9         User u = (User) obj;
    10         return name.equals(u.name);
    11     }
    12 
    13     public int hashCode() {
    14         String in = name;
    15         return in.hashCode();
    16     }
    17 }

    以上例子中就是通过比较姓名相同,即认为对象相等。

    1     List<User> userList = new ArrayList<>();
    2     userList.add(new User("1", "peter", 18));
    3     userList.add(new User("2", "stark", 25));
    4     userList.add(new User("3", "peter", 22));
    5     
    6     Set<User> userSet = new HashSet<>(userList);
    7     List<User> list = new ArrayList<>(userSet);
    8     list.forEach(System.out::println);

    通过将List放入Set进行自动去重(即使用到上面的equals与hashCode方法),然后重新放回List中即可。

  • 相关阅读:
    第六次作业--结对编程第二次
    第四次作业——项目选题报告
    第五次作业——结对
    第三次作业——团队项目展示
    第二次作业——个人项目实战
    第一次作业-准备
    码农开富农,锄头得先拿
    一个关于狗记录的Java练习
    一个随手练的题目后面再弄一个带面版的
    java拓荒者
  • 原文地址:https://www.cnblogs.com/pcheng/p/10930944.html
Copyright © 2020-2023  润新知