簡(jiǎn)述Java List去重五種方法
前言
去重,對(duì)于很多場(chǎng)合必不可少。寫(xiě)此篇文章是因?yàn)樵谥白瞿硞€(gè)畫(huà)面中,我在數(shù)據(jù)庫(kù)中進(jìn)行 Distinct 和 Order By 去重,發(fā)現(xiàn)影響效率,故此在后臺(tái)先做去重處理;所以記錄此文,已做參考:
Num1:使用java8新特性stream進(jìn)行List去重
public static void main(String[] args) {
List list = new ArrayList();
list.add(10);
list.add(11);
list.add(14);
list.add(10);
list.add(19);
list.add(12);
System.out.println("初始化集合為:"+list);
List newList = (List) list.stream().distinct().collect(Collectors.toList());
System.out.println("java8新特性stream去重后集合為:"+newList);
}
結(jié)果為:

Num2:雙重for循環(huán)去重
public static void main(String[] args) {
List list = new ArrayList();
list.add(10);
list.add(11);
list.add(14);
list.add(10);
list.add(19);
list.add(12);
System.out.println("初始化集合為:"+list);
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if(i!=j&&list.get(i)==list.get(j)) {
list.remove(list.get(j));
}
}
}
System.out.println("去重過(guò)后新集合為:"+list);
}
結(jié)果為:

Num3 :set集合判斷去重,不打亂順序
public static void main(String[] args) {
List list = new ArrayList();
list.add(10);
list.add(11);
list.add(14);
list.add(10);
list.add(19);
list.add(12);
System.out.println("初始化集合為:"+list);
Set set1 = new HashSet();
List newList = new ArrayList();
for (Object integer : list) {
if(set1.add(integer)) {
newList.add(integer);
}
}
System.out.println("set集合判斷去重:"+newList);
}
結(jié)果為:

Num4 : 遍歷后判斷賦給另一個(gè)list集合
public static void main(String[] args) {
List list = new ArrayList();
list.add(10);
list.add(11);
list.add(14);
list.add(10);
list.add(19);
list.add(12);
System.out.println("初始化集合為:"+list);
List newList2 = new ArrayList();
for (Object integer : list) {
if(!newList2.contains(integer)){
newList2.add(integer);
}
}
System.out.println("去重后新集合為:"+newList2);
}
結(jié)果為:

Num5 : set 和 list 轉(zhuǎn)換去重
public static void main(String[] args) {
List list = new ArrayList();
list.add(10);
list.add(11);
list.add(14);
list.add(10);
list.add(19);
list.add(12);
System.out.println("初始化集合為:"+list);
Set set2 = new HashSet();
List newList3 = new ArrayList();
set2.addAll(list);
newList3.addAll(set2);
System.out.println("set和list轉(zhuǎn)換去重:"+newList3);
}
結(jié)果為:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中隨機(jī)數(shù)的產(chǎn)生方式與原理詳解
這篇文章主要介紹了Java中隨機(jī)數(shù)的產(chǎn)生方式與原理詳解的相關(guān)資料,需要的朋友可以參考下2016-11-11
java實(shí)現(xiàn)文件夾上傳功能實(shí)例代碼(SpringBoot框架)
在web項(xiàng)目中上傳文件夾現(xiàn)在已經(jīng)成為了一個(gè)主流的需求,下面這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)文件夾上傳功能(springBoot框架)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
SpringBoot整合ES多個(gè)精確值查詢(xún) terms功能實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot整合ES多個(gè)精確值查詢(xún) terms功能實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06
SpringBoot+layuimini實(shí)現(xiàn)左側(cè)菜單動(dòng)態(tài)展示的示例代碼
Layuimini是Layui的升級(jí)版,它是專(zhuān)業(yè)做后臺(tái)頁(yè)面的框架,而且是適合PC端和移動(dòng)端,以下地址可以在PC端顯示,也可以在手機(jī)上顯示,只不過(guò)會(huì)做自適應(yīng),本文將給大家介紹了SpringBoot+layuimini實(shí)現(xiàn)左側(cè)菜單動(dòng)態(tài)展示的方法,需要的朋友可以參考下2024-04-04
Java使用StampedLock實(shí)現(xiàn)高效讀寫(xiě)功能
StampedLock 是 Java 8 引入的高性能鎖,提供了三種鎖模式:寫(xiě)鎖、悲觀讀鎖和樂(lè)觀讀鎖,與傳統(tǒng)的 ReentrantReadWriteLock 相比,StampedLock 更注重性能,特別適合讀多寫(xiě)少的場(chǎng)景,所以本文給大家介紹了Java使用StampedLock實(shí)現(xiàn)高效讀寫(xiě)功能,需要的朋友可以參考下2025-01-01
解決Mybatis的serverTimezone時(shí)區(qū)出現(xiàn)問(wèn)題
這篇文章主要介紹了解決Mybatis的serverTimezone時(shí)區(qū)出現(xiàn)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

