取り除かれた要素を繰り返すのjavaリストの方法

削除重複データArrayListを使用LinkedHashSetの(注文)

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新機能は再リストするストリーム

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

リストはループへの方法を使用してが含まれています

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

注:要素は、データエンティティクラスである場合には、追加のオーバーライドの必要性が等しい()と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 +
                '}';
    }
}
公開された44元の記事 ウォンの賞賛8 ビュー2446

おすすめ

転載: blog.csdn.net/qq_39659278/article/details/104829123