目录

  • 1 循环list中的所有元素然后删除重复
  • 2 通过HashSet去重
  • 3 删除List中重复元素,并保持顺序
  • 4 利用list.contain() 去重
  • 5 注意事项
  • 6 利用stream分组及去重
  • 7 删除集合中多个元素

1 循环list中的所有元素然后删除重复

/**
* 循环list中的所有元素然后删除重复
* @param list 待去重的list
* @return 去重后的list
*/
public static <T> List<T> removeDuplicate(List<T> list){for(int i=0;i<list.size()-1;i++){for(int j=list.size()-1;j>i;j--){if (list.get(j).equals(list.get(i))){list.remove(j);}}}return list;
}

2 通过HashSet去重

/*** 通过HashSet去重* @param list 待去重的list* @return 去重后的list*/
public static <T> List<T> removeDuplicateHashSet(List<T> list){HashSet<T> hs = new HashSet<>(list);list.clear();list.addAll(hs);return list;
}

3 删除List中重复元素,并保持顺序

/*** 删除List中重复元素,并保持顺序* @param list 待去重的list* @return 去重后的list*/
public static <T> List<T> removeDuplicateKeepOrder(List<T> list){Set set = new HashSet();List<T> newList = new ArrayList<>();for (T element : list) {//set能添加进去就代表不是重复的元素if (set.add(element)) newList.add(element);}list.clear();list.addAll(newList);return list;
}

4 利用list.contain() 去重

/*** 利用list.contain() 去重* @param list* @return*/
public static <T> List<T> removeDuplicateContain(List<T> list){List<T> listTemp = new ArrayList<>();for (T aList : list) {if (!listTemp.contains(aList)) {listTemp.add(aList);}}return listTemp;
}

5 注意事项

删除的时候size或者长度也在发生变化,这样会造成少删除,也可用Stream流进行过滤删除

List filterList = list.stream().filter(user -> user.getAge() >= 40)        .collect(toList());

例子:

JSONObject jsonObject = JSONObject.parseObject(forEntity.getBody());String content = jsonObject.getString("content");JSONArray jsonArray = JSONObject.parseArray(content);for (int i = jsonArray.size() - 1; i >= 0; i--) {JSONObject jsonObject1 = jsonArray.getJSONObject(i);String caseId = jsonObject1.getString("caseId");QueryWrapper queryWrapper=new QueryWrapper();queryWrapper.eq("user_id",caseInfoQueryParam.getUserId());queryWrapper.eq("case_id",caseId);queryWrapper.last("limit 1");CaseInfo caseInfo = caseInfoMapper.selectOne(queryWrapper);logger.info("案件绑定详情去重的案件->{}",caseInfo);if (caseInfo!=null){jsonArray.remove(i);}}

6 利用stream分组及去重

分组

classEntities.stream().collect(Collectors.groupingBy(ClassEntity::getGrade));

java8去重(根据年级和专业,当年级和专业都相同的情况下看做是重复数据)

List<ClassEntity> distinctClass = classEntities.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getProfessionId() + ";" + o.getGrade()))), ArrayList::new));

通过hashSet去重(如将classNames去重):该种去重是bean完全相同的时候算重复数据

List<String> classNameList = new ArrayList(new HashSet(classNames));

7 删除集合中多个元素

因为stream遍历的底层还是迭代器所以就不能边遍历边删除会出现异常ConcurrentModificationException,所以用传统for循环删除,一种删除是倒着删,另一种就是删除后重新倒退一位标志位

    public static void main(String[] args) {ArrayList<String> arrayList = new ArrayList();arrayList.add("111");arrayList.add("222");
//        arrayList.stream().forEach(s -> {
//            arrayList.remove(s);
//                    System.out.println(arrayList.size());
//                }
//        );for (int i = 0; i < arrayList.size(); i++) {arrayList.remove(i);i--;}System.out.println(arrayList);}

Java List集合去重的多种方法相关推荐

  1. python 多重列表去重_Python对列表去重的多种方法(四种方法)

    Python对列表去重的多种方法(四种方法) 无聊统计了下列表去重到底有多少种方法.下面小编给大家总结一下,具体内容详情如下: 开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重, ...

  2. python去重语句_Python对列表去重的多种方法(四种方法)

    无聊统计了下列表去重到底有多少种方法.下面小编给大家总结一下,具体内容详情如下: 开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重,有下面几种方法,前面两种方法不能保证顺序, 后 ...

  3. Java中集合拥有的共性方法

    在Java中集合的共性方法 1.在Java中集合作为最顶层的集合,他拥有所有集合有的共性方法.所以在定义实现类的时候可以使用多态. 集合拥有的共性方法: public boolean add(E e) ...

  4. Java数组去重的多种方法

    /* 数组去重 1:遍历数组,将元素依次添加进结果集中,如果结果集中已经存在,则不再添加,O(n*n) 2:如果知道元素范围,比如是字母,或者数字在固定范围内,可以采用辅助数组,辅助数组下标是去重数组 ...

  5. Java数组去重的多种方法,[Java教程]JavaScript常见的五种数组去重的方式

    [Java教程]JavaScript常见的五种数组去重的方式 0 2016-12-14 15:00:17 ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 ...

  6. Java Set集合去重机制

    关于java里面的集合,大家经常利用到Set集合没有重复数据的特性,来进行数据的去重,那么去重的原理是怎么样的呢? 最近面试了几个人,其间有聊到集合的东西,所以就顺便问了一下这个问题,但是都是只知道这 ...

  7. JAVA中集合去重的三种基本方式

    在学习JAVA的过程中,总是会碰见对集合中的元素进行去重的要求,在这里总结了三种基本的去重方法. 主要的思想就是:先取元素,后进行比较,最后放回去. 案例如下: package eliminate_d ...

  8. 【python常见面试题】之python 中对list去重的多种方法

    在python相关职位的面试过程中,会对列表list的去重进行考察.(注意有时会要求保证去重的顺序性) 1.直观方法 1 li=[1,2,3,4,5,1,2,3] 2 new_li=[] 3 for ...

  9. python中对list去重的多种方法

    怎么快速的对列表进行去重呢,去重之后原来的顺序会不会改变呢? 1.以下的几种情况结果是一样的,去重之后顺序会改变: ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [ ...

  10. python打卡记录去重_python中对list去重的多种方法

    今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数.不过这个东西最终还是没用上. 问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变. 直观方法 ...

最新文章

  1. 矩阵的特征值、特征向量及其代码求解实现
  2. Vue+Leaflet-side-by-side插件实现拉帘对比效果
  3. C++一级与二级指针基础详解
  4. 人生的许多不经意-致51CTO
  5. .net下模拟不同身份登陆以获取不同权限
  6. 杰出人士的34个好习惯
  7. sap脚本运行_如何使用Python脚本运行SAP?
  8. 每天一个linux命令(47):iostat命令
  9. osea/Beat Classification 4.3-4.5
  10. 基于大数据的城市租房信息可视化分析系统
  11. Android studio javah
  12. ScienceWord控件问题以及IE8对于base64编码图片长度限制的解决方案
  13. 全国大学生飞思卡尔智能车竞赛小记
  14. mysql字段长度的作用_数据库字段的长度 作用
  15. python搭建简易的https服务器
  16. Java图标对应的文件类型
  17. Domain Adaption3
  18. Proxool - 快速入門
  19. index.php打开失败,phpmyadmin无法打开index.php的解决方法
  20. 交互入门2——射击打靶游戏

热门文章

  1. Pix2Pix代码解析
  2. paxos算法java实现_Paxos算法——前世
  3. jdk和cglib动态代理
  4. 服务器虚拟化2种架构,服务器虚拟化常用架构详解
  5. win10支持8t 硬盘_WIN8.1/ WIN10磁盘分区详解
  6. 华硕主板装系统蓝屏_华硕笔记本电脑重装系统后蓝屏怎么办
  7. ARINC429数据总线简介
  8. 计算机科学之父--图灵
  9. 奥比中光深度摄像头_IphoneX发布!奥比中光也可提供3D深度摄像头
  10. 人工智能常用英文缩写