1. 程式人生 > 程式設計 >java List去掉重複元素的幾種方式(小結)

java List去掉重複元素的幾種方式(小結)

使用LinkedHashSet刪除arraylist中的重複資料(有序)

LinkedHashSet是在一個ArrayList刪除重複資料的最佳方法。LinkedHashSet在內部完成兩件事:

  • 刪除重複資料
  • 保持新增到其中的資料的順序
List<String> words= Arrays.asList("a","b","c","d");
HashSet<String> set=new LinkedHashSet<>(words);
for(String word:set){
   System.out.println(word);
}

使用HashSet去重(無序)

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

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

要從arraylist中刪除重複項,我們也可以使用java 8 stream api。使用steam的distinct()方法返回一個由不同資料組成的流,通過物件的equals()方法進行比較。

收集所有區域資料List使用Collectors.toList()。

Java程式,用於在不使用Set的情況下從java中的arraylist中刪除重複項。

List<String> words= Arrays.asList("a","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 +
        '}';
  }
}

到此這篇關於java List去掉重複元素的幾種方式(小結)的文章就介紹到這了,更多相關java List去掉重複元素內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!