首页 > 其他分享 >List去除重复数据的推荐方式 (*2)

List去除重复数据的推荐方式 (*2)

时间:2023-11-28 18:15:46浏览次数:30  
标签:LinkedHashSet 重复 ArrayList List numbersList 去除 arraylist

List去除重复数据的推荐方式 (*2)

推荐理由:保证顺序的同时去掉重复元素。

综合考量:在不考虑顺序的情况下使用HashSet和循环可取,一定程度上提升性能。

 

方式1:使用java8新特性stream进行List去重(强烈建议,简便实用)

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

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

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

   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);

 

方式2:使用LinkedHashSet删除arraylist中的重复数据(经典推荐,易于理解直观)

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

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

  Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字。

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

        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);

 

 

标签:LinkedHashSet,重复,ArrayList,List,numbersList,去除,arraylist
From: https://www.cnblogs.com/minaotor/p/17862564.html

相关文章

  • python中列表(list)拼接的三种方法
    你可以使用Python中的列表拼接操作来合并两个或多个列表。Python提供了几种方式来实现列表的拼接,包括使用+运算符、extend()方法和列表解析。以下是这些方法的示例:1.使用+运算符:list1=[1,2,3]list2=[4,5,6]concatenated_list=list1+list2print(concate......
  • 集合框架(三)ArrayList的常见使用
    优点:有序,可以重复,查询快。缺点:增删慢。List接口常用方法:1、add(Objectelement):向列表的尾部添加指定的元素。2、size():返回列表中的元素个数。3、get(intindex):返回列表中指定位置的元素,index从0开始。4、add(intindex,Objectelement):在列表的指定位置插入指定元......
  • list求差集的方法汇总(两个不同元素的List集合)
    一个全部用户集合List<UserInfo>allUser,一个部分用户集合List<UserInfo>commentUser,根据UserInfo中的UserID求差集,从allUser中得到剩下的一部分用户,通过stream流和lamda表达式实现publicList<UserInfo>getNotComment(List<UserInfo>allUser,List<UserInfo>commentU......
  • 219. 存在重复元素 II
    你一个整数数组nums和一个整数k,判断数组中是否存在两个不同的索引i和j,满足nums[i]==nums[j]且abs(i-j)<=k。如果存在,返回true;否则,返回false。示例1:输入:nums=[1,2,3,1],k=3输出:true>代码classSolution{public:boolcontainsNearbyD......
  • Java集合ArrayList,LinkedList,Vector的相同点与区别是什么?
    ✨前言✨本篇作为,java集合中ArrayList,LinkedList,Vector常用集合的分析概括,已便大家认识这三种集合的区别,和特点......
  • Java 将JSON数组转成List对象集合
     一、从对象列表中提取并组装JSON字段的数据:(工具类)publicclassJsonMsgUtils<T>{/***从对象列表中提取并组装JSON字段的数据。**@paramlogs包含对象的列表*@paramtargetClass目标对象类型,表示JSON消息的结构......
  • LeetCode-Java:80.删除有序数组中的重复项 II
    题目给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入......
  • LeetCode-Java:26.删除有序数组的重复项
    题目给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改数组......
  • lucene posting list 编码之Frame of Reference
    本文是:https://www.elastic.co/cn/blog/frame-of-reference-and-roaring-bitmaps文章的翻译及理解。lucene在存储doc时,会为每个doc分配一个doc_id。doc_id是segment维度(index->shard->segment)的一个数值,这个数值的范围是[0,2^32-1],因此:一个segment最多允许存储2^32-......
  • MySQL8.x 中 performance_schema 下 processlist表的说明
    MySQL8.x中performance_schema下processlist表的说明最近在研究一个MySQL数据库的监控相关功能的系统的实现,因此专门研究了一下processlist表。processlist表为MySQL的核心表之一。MySQLprocesslist表示当前由服务器内执行的线程集执行的操作。进程列表表是进程信息的来......