歡迎您光臨本站 註冊首頁

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

←手機掃碼閱讀     wooen @ 2020-06-12 , reply:0

使用LinkedHashSet刪除arraylist中的重複數據(有序)

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

  • 刪除重複數據

  • 保持添加到其中的數據的順序

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

 

使用HashSet去重(無序)

  //去掉List集合中重複的元素  Listwords= 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去重

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

收集所有區域數據List使用Collectors.toList()。

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

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

 

利用List的contains方法循環遍歷

  Listlist= 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 +          '}';    }  }



[wooen ] java List去掉重複元素的幾種方式(小結)已經有269次圍觀

http://coctec.com/docs/java/show-post-238149.html