java List去掉重复元素的几种方式

2020-03-12 16:07:21来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

java List去掉重复元素的几种方式

使用LinkedHashSet删除arraylist中的重复数据(有序)

List<String> words= Arrays.asList("a","b","b","c","c","d");
HashSet<String> set=new LinkedHashSet<>(words);
for(String word:set){
      System.out.println(word);
}

使用HashSet去重(无序)

//去掉List集合中重复的元素
List<String> words= Arrays.asList("a","b","b","c","c","d");
//方案一:
for(String word:words){
    set.add(word);
}
for(String word:set){
    System.out.println(word);
}

使用java8新特性stream进行List去重

List<String> words= Arrays.asList("a","b","b","c","c","d");
words.stream().distinct().collect(Collectors.toList()).forEach(System.out::println);

利用List的contains方法循环遍历

List<String> list= new ArrayList<>();
        for (String s:words) {
            if (!list.contains(s)) {
                list.add(s);
            }
        }

注:当数据元素是实体类时,需要额外重写equals()和hashCode()方法。
例如:
以学号为依据判断重复

public class Student {
    String id;
    String name;
    int age;

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Student student = (Student) o;

        return Objects.equals(id, student.id);
    }

    @Override
    public int hashCode() {
        return id != null ? id.hashCode() : 0;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

原文链接:https://www.cnblogs.com/lxy0/p/12483028.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:SpringBoot+AOP构建多数据源的切换实践

下一篇:MyBatis源码解析 - 类型转换模块