一、List的contains方法去重
示例代码如下:
import java.util.ArrayList;
import java.util.List;
/**
* @author qinxun
* @date 2023-06-13
* @Descripion: List集合去重
*/
public class RepeatDemo {
public static void main(String[] args) {
long start = System.currentTimeMillis();
// 准备一个有2w数据的集合,其中有一半是存在重复的数据
List<String> list = new ArrayList<>();
for (int i = 1; i <= 10000; i++) {
list.add(String.valueOf(i));
}
for (int i = 10000; i >= 1; i--) {
list.add(String.valueOf(i));
}
System.out.println(list);
System.out.println(collectionDistinct(list));
long end = System.currentTimeMillis();
// 输出 耗时:187毫秒
System.out.println("耗时:" + (end - start) + "毫秒");
}
/**
* List去重
*
* @param list List集合
* @return 去重后返回到集合数据
*/
private static List<String> collectionDistinct(List<String> list) {
List<String> result = new ArrayList<>();
for (String data : list) {
// list的contains方法去重
if (!result.contains(data)) {
result.add(data);
}
}
return result;
}
}
程序执行结果:
耗时:187毫秒
二、使用HashSet机制去重
示例代码如下:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
/**
* @author qinxun
* @date 2023-06-13
* @Descripion: List集合去重
*/
public class RepeatDemo {
public static void main(String[] args) {
long start = System.currentTimeMillis();
// 准备一个有2w数据的集合,其中有一半是存在重复的数据
List<String> list = new ArrayList<>();
for (int i = 1; i <= 10000; i++) {
list.add(String.valueOf(i));
}
for (int i = 10000; i >= 1; i--) {
list.add(String.valueOf(i));
}
System.out.println(list);
System.out.println(collectionDistinct(list));
long end = System.currentTimeMillis();
// 输出 耗时:15毫秒
System.out.println("耗时:" + (end - start) + "毫秒");
}
/**
* List去重
*
* @param list List集合
* @return 去重后返回到集合数据
*/
private static List<String> collectionDistinct(List<String> list) {
return new ArrayList<>(new HashSet<>(list));
}
}
程序执行结果:
耗时:15毫秒
三、使用Stream流的distinct方法去重
示例代码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author qinxun
* @date 2023-06-13
* @Descripion: List集合去重
*/
public class RepeatDemo {
public static void main(String[] args) {
long start = System.currentTimeMillis();
// 准备一个有2w数据的集合,其中有一半是存在重复的数据
List<String> list = new ArrayList<>();
for (int i = 1; i <= 10000; i++) {
list.add(String.valueOf(i));
}
for (int i = 10000; i >= 1; i--) {
list.add(String.valueOf(i));
}
System.out.println(list);
System.out.println(collectionDistinct(list));
long end = System.currentTimeMillis();
// 输出 耗时:15毫秒
System.out.println("耗时:" + (end - start) + "毫秒");
}
/**
* List去重
*
* @param list List集合
* @return 去重后返回到集合数据
*/
private static List<String> collectionDistinct(List<String> list) {
return list.stream().distinct().collect(Collectors.toList());
}
}
程序执行结果:
耗时:51毫秒
四、总结
我们推荐使用HashSet机制和Stream流的distinct方法实现去重。
标签:Java,list,List,System,几种,println,集合,out From: https://blog.51cto.com/u_13312531/6477010