java List去掉重復(fù)元素的幾種方式(小結(jié))
使用LinkedHashSet刪除arraylist中的重復(fù)數(shù)據(jù)(有序)
LinkedHashSet是在一個(gè)ArrayList刪除重復(fù)數(shù)據(jù)的最佳方法。LinkedHashSet在內(nèi)部完成兩件事:
刪除重復(fù)數(shù)據(jù) 保持添加到其中的數(shù)據(jù)的順序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集合中重復(fù)的元素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進(jìn)行List去重
要從arraylist中刪除重復(fù)項(xiàng),我們也可以使用java 8 stream api。使用steam的distinct()方法返回一個(gè)由不同數(shù)據(jù)組成的流,通過對(duì)象的equals()方法進(jìn)行比較。
收集所有區(qū)域數(shù)據(jù)List使用Collectors.toList()。
Java程序,用于在不使用Set的情況下從java中的arraylist中刪除重復(fù)項(xiàng)。
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); } }
注:當(dāng)數(shù)據(jù)元素是實(shí)體類時(shí),需要額外重寫equals()和hashCode()方法。例如:
以學(xué)號(hào)為依據(jù)判斷重復(fù)
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去掉重復(fù)元素的幾種方式(小結(jié))的文章就介紹到這了,更多相關(guān)java List去掉重復(fù)元素內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. JS sort方法基于數(shù)組對(duì)象屬性值排序2. 淺談SpringMVC jsp前臺(tái)獲取參數(shù)的方式 EL表達(dá)式3. JAVA上加密算法的實(shí)現(xiàn)用例4. 基于javascript處理二進(jìn)制圖片流過程詳解5. 使用Python和百度語音識(shí)別生成視頻字幕的實(shí)現(xiàn)6. Gitlab CI-CD自動(dòng)化部署SpringBoot項(xiàng)目的方法步驟7. Django-migrate報(bào)錯(cuò)問題解決方案8. Java Lock接口實(shí)現(xiàn)原理及實(shí)例解析9. Idea 快速生成方法返回值的操作10. ajax請(qǐng)求添加自定義header參數(shù)代碼
