List集合去重的五种方法
程序员文章站
2022-06-10 08:31:37
...
package list_distinct_test;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author root
* @version V1.0
* @Package list_distinct_test
* @date 2020/9/6 17:32
*/
public class ListTest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("c");
list.add("b");
list.add("a");
delrepeat1(list);
delrepeat2(list);
delrepeat3(list);
delrepeat4(list);
delrepeat5(list);
//System.out.println(list.toString());
}
/**
* 方法1:去除重复数据:利用set集合无重复元素的特性进行去重
* 将list集合加入set集合中
* 由于set集合无序性,不会保持原来的顺序
* @param list
* @return
*/
public static List<String> delrepeat1(List<String> list) {
if (list != null && list.size() > 0) {
Set set = new HashSet();
List list2 = new ArrayList();
set.addAll(list);
list2.addAll(set);
//return list2;
System.out.println(list2.toString());
}
return null;
}
/**
* 方法二:利用TreeSet、LinkedHashSet保持顺序一致去重
*/
public static void delrepeat2(List<String> list){
//方法1
//List<String> listNew = new ArrayList<String> (new TreeSet<String>(list) );
//方法2
List<String> listNew2 = new ArrayList<String> (new LinkedHashSet<String>(list));
System.out.println(listNew2.toString());
}
/**
* 方法3:利用List集合的contains()方法
* 遍历list集合,将元素加到另一个list集合中
*/
public static void delrepeat3(List<String> list){
List<String> list2 = new ArrayList<>();
for (String str : list) {
if(!list2.contains(str)){
list2.add(str);
}
}
System.out.println(list2.toString());
}
/**
* 方法4:循环遍历list,利用remove()方法去重
*/
public static void delrepeat4(List<String> list){
for(int i = 0; i < list.size() -1; i++){
for(int j = list.size() - 1; j > i; j--){
if(list.get(j).equals(list.get(i))){
list.remove(j);
}
}
}
System.out.println(list.toString());
}
/**
* 方法5:利用java8的新特性:stream()流处理
*/
public static void delrepeat5(List<String> list){
List<String> list2 = list.stream().distinct().collect(Collectors.toList());
System.out.println(list2.toString());
}
}
上一篇: 前端面试题目
下一篇: 什么是伪数组,如何将伪数组转为真数组