Java 去除重复数据的五种方式

2023-10-29

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

删除重复数据
保持添加到其中的数据的顺序
Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字。

例如1,3和5.我们将列表添加到LinkedHashSet,然后将内容返回到列表中。结果arraylist没有重复的整数。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
 
public class ArrayListExample
 
{
    public static void main(String[] args)
 
    {
 
        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
 
        System.out.println(numbersList);
 
        LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);
 
        ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
 
        System.out.println(listWithoutDuplicates);
 
    }
 
}`

输出结果

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

[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中删除重复项。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
public class ArrayListExample
{
    public static void main(String[] args)
 
    {
 
        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
        System.out.println(numbersList);
        List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());
 
        System.out.println(listWithoutDuplicates);
 
    }
 
}

输出结果
[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]

[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循环去重

for (int i = 0; i < list.size(); i++) { 
for (int j = 0; j < list.size(); j++) { 
if(i!=j&&list.get(i)==list.get(j)) { 
list.remove(list.get(j)); 
 } 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 去除重复数据的五种方式 的相关文章

随机推荐

  • ntohs, ntohl, htons,htonl的比较和详解

    假设在x86平台上 有一个int型变量 在内存中的内部由低到高分别是 0x12 0x34 0x56 0x78当通过网络发送该数据时 正确的发送顺序是 0x78 0x56 0x34 0x12 X86 系列 CPU都是 little endia
  • selenium与自动化测试成神之路

    在群里总是会遇到很多人问低级问题 写了一个selenium脚本 却执行失败 跑到群里来问 大神 这里为什么会报错 很多都是明显的语法问题 一问方知 今天刚刚学selenium 之前也没有语法基础 没学过Java 没学过Python 就跑来搞
  • 开关电源基本工作原理

    本文以丰富的开关电源案例分析 介绍单端正激式开关电源 自激式开关电源 推挽式开关电源 降压式开关电源 升压式开关电源和反转式开关电源 随着全球对能源问题的重视 电子产品的耗能问题将愈来愈突出 如何降低其待机功耗 提高供电效率成为一个急待解决
  • 21 【styled-components的使用】

    21 styled components的使用 1 为什么要用这个 我们都知道 我们从最开始学css的时候 为了避免写的样式影响到另外的地方 所以我们这样来写的 userConten userBtn button font size 18p
  • Anaconda安装pytorch虚拟环境

    Anaconda安装pytorch虚拟环境 Anaconda部分操作 查看安装了哪些包 查看当前存在哪些虚拟环境 检查更新当前conda Python创建虚拟环境 激活或者切换虚拟环境 虚拟环境中安装额外的包 删除虚拟环境 Pytorch虚
  • 计算机视觉算法岗面试题

    大佬的面试经验 https www nowcoder com discuss 128148 以及大佬的博客 https blog csdn net liuxiao214 article details 83043170 根据大佬的面试经验一
  • pipeline 获取 tag_Docker镜像获取(gcr.io等)- 2.0

    在 Docker镜像获取 gcr io等 中 介绍了几种获取 Docker 镜像的方式 对于大部分镜像来说都可以通过这些方式获得 但是对于较新的镜像 上面几种方式就很不方便了 所以今天介绍一种简单又安全的方式来获取被墙的镜像 通过 Dock
  • 单机数据库性能测试总结

    当前单机数据库 文件型数据库 有很多 为了选择更好的数据库 以便以后使用 在这主要对以下数据库进了插入 查询的速度进行测试 以及数据库的管理方式进行详细说明 数据库分别为 SQLLite FireBird Derby HSql Postgr
  • RabbitMQ入门------Java

    RabbitMQ RabbitMQ是一个开源的AMQP实现 服务器端用Erlang语言编写 支持多种客户端 如 Python Ruby NET Java JMS C PHP ActionScript XMPP STOMP等 支持AJAX 用
  • sql计算占比

    计算占比是日常分析中常见的需求 下面我们来小结一下怎么用sql来实现计算占比 1 数据准备 现在有一张表 表里有两个字段 op name与state 都为离散型可枚举数据 除此以外表里还有其他字段 数据形式如下 op name state
  • Neo4j Desktop数据导出,导入Neo4j Community (Docker环境)

    目前课题组有基于Kubernetes和Dockers的集群以及阿里云镜像托管仓库 我们以往建立的知识图谱都是在本机有数据备份 怎么将他们导出到集群环境的Neo4j中呢 本机数据导出 Neo4j Desktop提供很多功能 但是一键导出功能根
  • VMware虚拟机设置网络

    https jingyan baidu com article f0e83a257beae322e591013d html
  • JS中int和string的转换

    在javascript里怎么样才能把int型转换成string型 1 var x 100 a x toString 2 var x 100 a x JS会自动隐性转换 javascript 将string 变成 int JScript va
  • 列表查询和分组统计字段其他类型

    示例 列表查询 字段单选
  • 分支循环练习篇

    选择题第一部分练习 1 2 3 4 5 6 答案 cccddd 选择题第二部分练习 1 2 答案 bc 代码练习第一部分 1 2 3 4 5 使用试除法 ps 用到了新的库函数sqrt 开方 代码练习第二部分 1 2 老师写法 我的写法 3
  • PhpStorm同时编辑多行

    看到这张图基本就都明白了
  • HIT-ICS大作业

    计算机系统大作业 题目 程序人生 Hello s P2P 计算机科学与技术学院 摘 要 大作业题为程序人生 Hello s P2P 围绕一个较简单的hello c函数的整个生命周期展开 介绍了该示例程序从编写到执行到结束的全过程 详细地分析
  • 【Unity API】Input类

    Input类函数是游戏输入系统的接口 使用此类函数可以读取游戏输入设置中的虚轴 以及访问移动设备上的多点触摸或加速度计数据 关于 游戏输入设置 可以看到我的另一篇文章 https blog csdn net Ha1f Awake artic
  • javafx写一个小游戏-井字棋

    学了几天的javafx 感觉非常好用 自己写了一个小游戏 如有不足 希望大佬加以指正 谢谢 1 先写UI界面 新建一个ui fxml文件 用于显示ui界面 界面效果如下 代码如下
  • Java 去除重复数据的五种方式

    1 使用LinkedHashSet删除arraylist中的重复数据 LinkedHashSet是在一个ArrayList删除重复数据的最佳方法 LinkedHashSet在内部完成两件事 删除重复数据 保持添加到其中的数据的顺序 Java