您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了java中List如何去掉重復元素,內(nèi)容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。
使用LinkedHashSet刪除arraylist中的重復數(shù)據(jù)(有序)
LinkedHashSet是在一個ArrayList刪除重復數(shù)據(jù)的最佳方法。LinkedHashSet在內(nèi)部完成兩件事:
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去重
要從arraylist中刪除重復項,我們也可以使用java 8 stream api。使用steam的distinct()方法返回一個由不同數(shù)據(jù)組成的流,通過對象的equals()方法進行比較。
收集所有區(qū)域數(shù)據(jù)List使用Collectors.toList()。
Java程序,用于在不使用Set的情況下從java中的arraylist中刪除重復項。
List<String> words= Arrays.asList("a","b","b","c","c","d"); words.stream().distinct().collect(Collectors.toList()).forEach(System.out::println);
利用List的contains方法循環(huán)遍歷
List<String> list= new ArrayList<>(); for (String s:words) { if (!list.contains(s)) { list.add(s); } }
注:當數(shù)據(jù)元素是實體類時,需要額外重寫equals()和hashCode()方法。
例如:
以學號為依據(jù)判斷重復
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 + '}'; } }
以上就是關(guān)于java中List如何去掉重復元素的內(nèi)容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。