当前位置: 首页 > 图灵资讯 > 技术篇> Java集合去重的几种方法

Java集合去重的几种方法

来源:图灵教育
时间:2023-06-17 13:49:27

一、Listcontains方法去重

示例代码如下:

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) {            // containstlist方法去重复            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方法来实现去重。

上一篇:

Spring依赖查找

下一篇:

事务的属性