如何實現List 集合去重?


3種實現思路:

1.自定義方法去重,通過循環判斷當前的元素是否存在多個,如果存在多個,則刪除此重復項,循環整個集合最終得到的就是一個沒有重復元素的List

(1)首先我們可以創建一個新的集合,通過循環原集合判斷循環的元素,是否存在於新集合,如果不存在就插入,存在了就忽略,這樣循環玩,這樣循環完了,最終新的集合就是沒有重復元素的集合。

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

public class DistinctExample {
public static void main(String[] args) {
// 創建並給 List 賦值
List<Person> list = new ArrayList<>();
list.add(new Person("李四", "123456", 20));
list.add(new Person("張三", "123456", 18));
list.add(new Person("王五", "123456", 22));
list.add(new Person("張三", "123456", 18));
// 去重操作
List<Person> newList = new ArrayList<>(list.size());
list.forEach(i -> {
if (!newList.contains(i)) { // 如果新集合中不存在則插入newList.add(i);
}
});
// 打印集合newList.forEach(p -> System.out.println(p));
}
}

@Data
class Person {
private String name;
private String password;
private int age;

public Person(String name, String password, int age) {
this.name = name;
this.password = password;
this.age = age;
}
}

(2)使用迭代器循環並且判斷當前元素首次出現的位置(indexOf)是否等於最后出現的位置(IastIndexOf),如果不等於則說明此元素為重復元素,最終就能得到一個沒有重復元素的集合。

import lombok.Data;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class DistinctExample {
public static void main(String[] args) {
// 創建並給 List 賦值
List<Person> list = new ArrayList<>();
list.add(new Person("李四", "123456", 20));
list.add(new Person("張三", "123456", 18));
list.add(new Person("王五", "123456", 22));
list.add(new Person("張三", "123456", 18));
// 去重操作
Iterator<Person> iterator = list.iterator();
while (iterator.hasNext()) {
// 獲取循環的值
Person item = iterator.next();
// 如果存在兩個相同的值if (list.indexOf(item) != list.lastIndexOf(item)) {
// 移除相同的值
iterator.remove();
}
}
// 打印集合信息
list.forEach(p -> System.out.println(p));
}
}

@Data
class Person {
private String name;
private String password;
private int age;

public Person(String name, String password, int age) {
this.name = name;
this.password = password;
this.age = age;
}
}

 

2.利用HashSet去重

    List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("a");
list.add("b");
//利用HashSet去重
//利用List中的元素創建HashSet集合,此時set中進行了去重操作
HashSet set = new HashSet(list);
//清空list集合
list.clear();
//將去重后的元素重新添加到list中
list.addAll(set);

HashSet 去重之后,元素的先后順序也發生了改變
Set集合依靠自帶的去重特性,可以很方便的實現去重功能,並且可以用LinkedHastSet再去重的同時又保證了元素所在的位置不被更改




2.通過List的contains()方法去重

     // 創建一個新的list集合,用於存儲去重后的元素
             List listTemp = new ArrayList();
    // 遍歷list集合
          for (int i = 0; i < list.size(); i++) {
   // 判斷listTemp集合中是否包含list中的元素
          if (!listTemp.contains(list.get(i))) {
   // 將未包含的元素添加進listTemp集合中
         listTemp.add(list.get(i));
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM