Java List 过滤重复数据

需求:

数据库返回结果集中包含重复数据并存入List集合中,过滤到重复数据并保留最新数据

解析:

数据库中新增记录位置在下面
而SQL查询一般为升序即从上向下查询也就是最新数据
在集合中相同数据的下标越大

解决方法:

  1. 方法一:

    利用LinkedHashSet,由于HashSet底层为HashMap
    新增数据会覆盖原数据既过滤了重复数据又保障了最终结果为最新数据,
    但是结果会按照hash值排序
    为了保留原顺序采用LinkedHashSet
    既保障了结果唯一和数据最新同时又保留原结果的顺序

    List<Integer> list = Arrays.asList(5, 5, 5, 5, 5, 3, 3, 3, 1, 2, 2, 4, 4, 4, 4);
    List<Integer> nums = new ArrayList<>(list);
    Set<Integer> set = new LinkedHashSet<>();
    for (Integer num : nums) {set.add(num);
    }
    nums.clear();
    for (Integer num : set) {nums.add(num);
    }
    System.out.println(nums);
    
  2. 方法二:

    利用contains方法
    声明一个空集合,倒序遍历原集合,将原集合中的数据获取
    利用contains方法问原集合中的数据之前声明的空集合中是否存在,
    如果不存在则添加该数据到新集合中,
    再清空原集合,
    倒序遍历新集合,将新集合中的数据保存到原集合

    List<Integer> list = Arrays.asList(5, 5, 5, 5, 5, 3, 3, 3, 1, 2, 2, 4, 4, 4, 4);
    ArrayList<Integer> nums = new ArrayList<>(list);
    List<Integer> results = new ArrayList<>();
    for (int i = nums.size() - 1; i >= 0; i--) {Integer num = nums.get(i);if (!results.contains(num)) {results.add(num);}
    }
    nums.clear();
    for (int i = results.size() - 1; i >= 0; i--) {Integer num = results.get(i);nums.add(num);
    }
    System.out.println(nums);
    
  3. 方法三:

    利用Stream API 直接去重 但不敢保障最终结果

    List<Integer> list = Arrays.asList(5, 5, 5, 5, 5, 3, 3, 3, 1, 2, 2, 4, 4, 4, 4);
    List<Integer> nums = new ArrayList<>(list);
    nums = nums.stream().distinct().collect(Collectors.toList());
    nums.forEach(System.out::println);
    

Java List 过滤重复数据相关推荐

  1. oracle 查的数据去重复数据,Oracle查询和过滤重复数据

    对数据库某些意外情况,引起的重复数据,如何处理呢? ----------------查重复: select * from satisfaction_survey s where s.as_side = ...

  2. C#过滤重复数据,使用泛型

    #region List<T> 过滤重复数据 public delegate bool EqualsComparer<T>(T x, T y); /// <summary ...

  3. scrapy过滤重复数据和增量爬取

    原文链接 前言 这篇笔记基于上上篇笔记的---<scrapy电影天堂实战(二)创建爬虫项目>,而这篇又涉及redis,所以又先熟悉了下redis,记录了下<redis基础笔记> ...

  4. java list过滤重复的数据_List 去除重复数据的 5 种正确姿势!

    以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据 1.使用LinkedHashSet删除arraylist中的重复数据 LinkedHashSet是在一个ArrayList删除 ...

  5. 2、MySQL使用(DISTINCT)过滤重复数据

    在 MySQL 中使用 SELECT 语句执行简单的数据查询时,返回的是所有匹配的记录.如果表中的某些字段没有唯一性约束,那么这些字段就可能存在重复值.为了实现查询不重复的数据,MySQL 提供了 D ...

  6. 重复数据_MongoDB 自动过滤重复数据

    摘要:使用 update_one() 方法而不是 insert_one() 插入数据. 相信你一定有过这样的经历:大晚上好不容易写好一个爬虫,添加了种种可能出现的异常处理,测试了很多遍都没有问题,点击 ...

  7. list怎么取数据_MongoDB 自动过滤重复数据

    摘要:使用 update_one() 方法而不是 insert_one() 插入数据. 相信你一定有过这样的经历:大晚上好不容易写好一个爬虫,添加了种种可能出现的异常处理,测试了很多遍都没有问题,点击 ...

  8. list过滤重复数据java_java中List去除重复数据的五种方式

    在使用java编码中,我们会经常遇到让List对象去重,最常见的是ArrayList去除重复的数据, 看似很简单的东西,其实里面是有很多学问的,下面介绍不同的方法去除java中ArrayList中的重 ...

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

    以下介绍五种-不同的方法去除Java中ArrayList中的重复数据 1.使用LinkedHashSet删除arraylist中的重复数据 **LinkedHashSet**是在一个ArrayList ...

最新文章

  1. 最热开源无服务器函数:五大Fission架构参考
  2. 新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t
  3. SpringBoot+Vue整合WebSocket实现前后端消息推送
  4. SPUtility.ParseDate使用问题
  5. NFL discussion调研
  6. c语音异或运算符_C语言中的按位异或运算符有什么用处?
  7. Android开发之TextView排版问题
  8. XCODE---个人常用快捷键整理
  9. GLEW_ERROR_NO_GL_VERSION的解决方法
  10. Oracle中查看所有表和字段
  11. 设置mysql acquisition_MYSQL 7*24 高可用环境的部署
  12. Java 之 注释介绍
  13. 空间频率(lp/mm,cycles/mm,lp/mrad,cycles/mrad)
  14. python发邮件被认定为垃圾邮件_使用Python登陆QQ邮箱发送垃圾邮件 简单实现
  15. 【C++】数字的组合排列情况
  16. 求助计算机程序员,程序员用代码求救:几近绝望时竟是老本行救了他
  17. 渐变背景(background)效果
  18. prometheus监控mysql慢查询_使用Grafana+Prometheus监控mysql服务性能
  19. Error: unable to perform an operation on node ‘rabbit@rabbitma‘ please see diamostics infoxmation
  20. calibre 电子书库/电子书管理软件--相关配置

热门文章

  1. Unmatched braces in the pattern
  2. 滑稽,使用paddle轻松搞定抠图,妈妈再也不用担心我不会抠图了
  3. Mac系统 - zsh所有命令失效解决方式
  4. 计算机科学与技术的论文致谢,毕业论文致谢200字(精选7篇)
  5. 静态资源部署分析和实验
  6. Java开发必学:java核心技术电子书资源
  7. matlab 端点检测 能零比法_端点检测方法
  8. SpringCloud系列之Eureka服务注册及发现
  9. 不入耳式蓝牙耳机什么牌子好、最好的骨传导耳机推荐
  10. 你不知道的雍正八年版《连平州志》