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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何在 Linux 上搭建 java 部署環(huán)境(安裝jdk/tomcat/mys
這篇文章主要介紹了如何在 Linux 上搭建 java 部署環(huán)境(安裝jdk/tomcat/mysql) + 將程序部署到云服務(wù)器上的操作),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01基于OpenCV與JVM實(shí)現(xiàn)矩陣處理圖像
本文主要介紹了Java圖像處理實(shí)戰(zhàn)之基于OpenCV與JVM實(shí)現(xiàn)矩陣處理圖像。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)圖像處理有一定的幫助,感興趣的可以試一試2022-01-01java實(shí)現(xiàn)周期性執(zhí)行(定時(shí)任務(wù))
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)周期性執(zhí)行定時(shí)任務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09tio-boot?jfinal-plugins框架整合redis示例詳解
這篇文章主要為大家介紹了tio-boot?jfinal-plugins框架整合redis示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12使用ShardingSphere-Proxy實(shí)現(xiàn)分表分庫(kù)
這篇文章介紹了使用ShardingSphere-Proxy實(shí)現(xiàn)分表分庫(kù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02java項(xiàng)目構(gòu)建Gradle的使用教程
這篇文章主要為大家介紹了java項(xiàng)目構(gòu)建Gradle的使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03Java實(shí)現(xiàn)PDF轉(zhuǎn)圖片的三種方法
有些時(shí)候我們需要在項(xiàng)目中展示PDF,所以我們可以將PDF轉(zhuǎn)為圖片,然后已圖片的方式展示,效果很好,Java使用各種技術(shù)將pdf轉(zhuǎn)換成圖片格式,并且內(nèi)容不失幀,本文給大家介紹了三種方法實(shí)現(xiàn)PDF轉(zhuǎn)圖片的案例,需要的朋友可以參考下2023-10-10java編程之單元測(cè)試(Junit)實(shí)例分析(附實(shí)例源碼)
這篇文章主要介紹了java編程之單元測(cè)試(Junit),結(jié)合實(shí)例形式較為詳細(xì)的分析總結(jié)了Java單元測(cè)試的原理、步驟及相關(guān)注意事項(xiàng),并附帶了完整代碼供讀者下載參考,需要的朋友可以參考下2015-11-11