java List去除重复数据的五种方式

java List去除重复数据的五种方式以下介绍五种-不同的方法去除Java中ArrayList中的重复数据1.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据 保持添加到其中的数据的顺序Java示例使用LinkedHashSet删除arraylist中的重复项。在…

大家好,又见面了,我是你们的朋友全栈君。

 

以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据

1.使用LinkedHashSet删除arraylist中的重复数据

LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:

  • 删除重复数据
  • 保持添加到其中的数据的顺序

Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字,例如1,3和5.我们将列表添加到LinkedHashSet,然后将内容返回到列表中。结果arraylist没有重复的整数。


    public static void main(String[] args) {
        int List[] =[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
        LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(List);
        ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
        System.out.println(listWithoutDuplicates);

    }

输出结果

[1, 2, 3, 4, 5, 6, 7, 8]

2.使用java8新特性stream进行List去重 

要从arraylist中删除重复项,我们也可以使用java 8 stream api。使用steam的distinct()方法返回一个由不同数据组成的流,通过对象的equals()方法进行比较。

收集所有区域数据List使用Collectors.toList()

Java程序,用于在不使用Set的情况下从java中的arraylist中删除重复项

public static void main(String[] args){
        int List[] =[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
        List<Integer> listWithoutDuplicates = List.stream().distinct().collect(Collectors.toList());
        System.out.println(listWithoutDuplicates);
    }

输出结果

[1, 2, 3, 4, 5, 6, 7, 8]

 

3.利用HashSet不能添加重复数据的特性 由于HashSet不能保证添加顺序,所以只能作为判断条件保证顺序:

private static void removeDuplicate(List<String> list) {
    HashSet<String> set = new HashSet<String>(list.size());
    List<String> result = new ArrayList<String>(list.size());
    for (String str : list) {
        if (set.add(str)) {
            result.add(str);
        }
    }
    list.clear();
    list.addAll(result);
}

4.利用List的contains方法循环遍历,重新排序,只添加一次数据,避免重复:

private static void removeDuplicate(List<String> list) {
    List<String> result = new ArrayList<String>(list.size());
    for (String str : list) {
        if (!result.contains(str)) {
            result.add(str);
        }
    }
    list.clear();
    list.addAll(result);
}

5.双重for循环去重 


public static void main(String[] args) {
	int List[] = [1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
	for (int i = 0; i < List.size(); i++) {
		for (int j = i + 1; j < List.size(); j++) {
			if (List.get(i) == List.get(j)) {
				List.remove(j);
				j--;
			}
		}
	}
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141182.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • spring 4 泛型注入

    spring 4 泛型注入最近对系统进行改造,发现在泛型实例初始化的时候,得不到想要的泛型。或者需要强制转换。spring4开始支持泛型对象初始化,初始化方法如下:注:使用配置文件的方法暂时还没有发现,下面是使用javaannotation的方法:packagecom.mitchz..toolkit.chain;importjava.util.List;importjava.util.M

  • 博客园h1h2h3笔记和文章写作规范

    博客园h1h2h3笔记和文章写作规范为什么要整理?2016-06-16之前写的大多数文章使用的标题都是h3,h4,而并不是h1,h2,h3。在为文章生成目录后有以下问题:1.文章大纲不清晰;2.由于h2h3没有规划好,生成出来

  • java过滤器的应用(java拦截器的作用)

    Java过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器可以对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改;也可以对响应进行过滤,拦截或修改响应。Java中过滤器也是常用的部分,用于限制某些东西,下面来让我们了解一下吧。过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则…

  • navicat 15.0.25 激活码【在线注册码/序列号/破解码】

    navicat 15.0.25 激活码【在线注册码/序列号/破解码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • JAVA生成uuid_oracle随机生成uuid

    JAVA生成uuid_oracle随机生成uuidUUID生成importjava.util.UUID;publicclassJavaUUIDTest{publicstaticvoidmain(String[]args){//未加工的UUIDStringpreUuid=UUID.randomUUID().toString();System.out.println(preUuid);//第一种方法生成UUID,去掉“-”符号

  • traceroute和tracert用法详解「建议收藏」

    traceroute和tracert用法详解「建议收藏」一、什么是Traceroute?            Internet,即国际互联网,是目前世界上最大的计算机网络,更确切地说是网络的网络。它由遍布全球的几万局域网和数百万台计算机组成,并通过用于异构网络的TCP/IP协议进行网间通信。互联网中,信息的传送是通过网中许多段的传输介质和设备(路由器,交换机,服务器,网关等等)从一端到达另一端。每一个连接在Internet上的设备,如主…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号