首页 > 其他分享 >List集合去重

List集合去重

时间:2023-07-26 20:34:34浏览次数:29  
标签:iterator List list next 过滤 集合

需求场景: 接口返回的数据是一个List集合 需要将这个集合中的数据进行一个过滤,保证没有重复数据.
优点:使用迭代器进行去除多余数据不会,简单高效,不会发生过滤不全,数组越界等问题.

实例代码:

  public void listTest() {
       List<String> list = new ArrayList<>(Arrays.asList("1", "2", "7", "4", "5", "6", 		   "6", "6", "1", "4", "5"));        
       System.out.println("过滤之前:"+list);
       Iterator<String> iterator = list.iterator();
        // 过滤器
       Set<String> filterSet = new HashSet<>();
       while(iterator.hasNext()){
            // 获取当前数据放到过滤器中
            String next = iterator.next();
            // 添加不成功,使用迭代器将其remove
            if (!filterSet.add(next)){
                iterator.remove();
           }
        }
        System.out.println("过滤之后:"+list);
    }
运行后打印的数据:
过滤之前:[1, 2, 7, 4, 5, 6, 6, 6, 1, 4, 5]
过滤之后:[1, 2, 7, 4, 5, 6]

标签:iterator,List,list,next,过滤,集合
From: https://www.cnblogs.com/jianghousen/p/17583484.html

相关文章

  • 面试-集合
    hashMap扩容大于当前容量0.75,扩容成2倍。创建一个新空数组,重新hash初始容量16链表大于8转换为红黑树,小于6退化为链表indexindex=HashCode(Key)&(Length-1)index的结果等同于HashCode后⼏位的值。只要输⼊的HashCode本身分布均匀,Hash算法的结果就是均匀的hashTable在很......
  • Redis的有序集合Zset为啥用跳表不用二叉树
    跳表和红黑树查找的时间复杂度都是logN,插入删除也是logN。范围查找貌似也都是O(k+logn),其中n是树中节点的数量,k是满足范围条件的节点数量。但是实现起来跳表要简单很多。1.zset有个很核心的操作叫范围查找,我们要查找某个范围区间的元素。跳表可以做到logN时间复杂度内的快......
  • DevExpress WPF Tree List组件,让数据可视化程度更高!(一)
    DevExpressWPFTreeList组件是一个功能齐全、数据感知的TreeView-ListView混合体,可以把数据信息显示为REE、GRID或两者的组合,在数据绑定或非绑定模式下,具有完整的数据编辑支持。DevExpressWPF 拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过......
  • vue--day44-todolist的localStorage本地存储
    添加修改删除数据发生变化,可以用watch监测来实现监测数据的变化1.App.vue  <template><divid="root"><divclass="todo-container"><divclass="todo-wrap"><!--传递函数儿子给父亲传东西,父亲偷偷传递一个函数,儿子调用这个函数--><MyHeader:addTodo=&q......
  • 如何将1千万个数据加到List中
    1.如何将1千万个数据加到List中ArraysList可以存下,但是效率低,可以使用LinkedList。2.两个1千万List如何找到,A中有,但B中没有的元素。可以将List转成HashSet,使用HashSet的retainAll方法。retainAll作用是保留集合中与另一个集合相同的元素,即取交集3.使用HashSet的retainAll()......
  • 聊聊List、Set、Map
    1.List哪些实现类JavaList一共三个实现类分别是ArrayList、Vector和LinkedList。(1)ArrayList是最常见用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已有数组的数据复制到......
  • 集合框架
    集合框架集合的概念概念:对象的容器,实现对对象常用的操作,类似数组功能和数组的区别:数组长度固定,集合长度不固定数组可以存储基本类型和引用类型,集合只能存储引用类型Collection接口Collection父接口特点:代表一组任意类型的对象,无序.无下标.不能重复方法:boole......
  • redis 取出指定集合
    Redis取出指定集合Redis是一种高性能的键值存储数据库,它支持多种数据类型,包括字符串、哈希、列表、集合和有序集合。在Redis中,集合是一种无序且唯一的数据结构,它可以存储多个元素。本文将介绍如何在Redis中取出指定集合的元素,并提供相关代码示例。Redis集合Redis集合是一个无序......
  • linq lambda 两个list求交集:根据每一项模糊匹配(contains) 并且带出where过滤条件里
    直接使用 varresult=list1.Where(str1=>list2.Contains(str))是不行的,这个要求两个list的string值必须有相等的才行例如list1中有apple,那么list2中必须有apple才能匹配,而list2中只有app所以匹配不了 解决办法:List<string>list1=newList<string>{"apple","......
  • CMake Error at CMakeLists.txt: No CMAKE_CXX_COMPILER could be found.
    系统环境:Ubuntu22.04.11.问题发生--TheCcompileridentificationisGNU11.3.0--TheCXXcompileridentificationisunknown--DetectingCcompilerABIinfo--DetectingCcompilerABIinfo-done--CheckforworkingCcompiler:/usr/bin/cc-skipped--......