list去重 distinct

list去重 distinct总结下。1.使用java8新特性stream进行List去重publicstaticList<String>delRepeat(List<String>list){List<String>myList=listAll.stream().distinct().collect(Collectors.toList());returnmyList;}2.双重for循环去重(不推荐使用,速度太慢)实际是使用lis…

大家好,又见面了,我是你们的朋友全栈君。

总结下。

1. 使用java8新特性stream进行List去重

public static List<String> delRepeat(List<String> list) {

     List<String> myList = listAll.stream().distinct().collect(Collectors.toList());
     return myList ;
}
 

2.双重for循环去重 (不推荐使用,速度太慢)

实际是使用list自身方法remove()方法。 

        for (int i = 0; i < list.size(); i++) {

            for (int j = 0; j < list.size(); ) {

                if (i != j && list.get(i) == list.get(j)) {

                    list.remove(j);
                } else {

                    j++;
                }
            }
        }

3.set集合判断去重

不打乱顺序

A  // Set去重并保持原先顺序的两种方法
   public static void delRepeat(List<String> list) {

          //方法一
       List<String> listNew = new ArrayList<String>(new TreeSet<String>(list));
       //方法二
       List<String> listNew2 = new ArrayList<String>(new LinkedHashSet<String>(list));
   }

B
Set set1 = new HashSet(); 
List newList1 = new ArrayList(); 
for (Integer integer : list) { 
if(set1.add(integer)) { 
newList1.add(integer); 

 

打乱顺序

     /**
     * 去除重复数据
     * 由于Set的无序性,不会保持原来顺序
     * @param list
     */
    public static List<Map<String, Object>> distinct(List<Map<String, Object>> list) {

        final boolean sta = null != list && list.size() > 0;
        if (sta) {

            Set set = new HashSet();
            List doubleList= new ArrayList();
            set.addAll(list);
            doubleList.addAll(set2);
            return doubleList;
        }
        return null;
    }
 

4.遍历后判断赋给另一个list集合 

List newList2 = new ArrayList(); 
for (Integer integer : list) { 
if(!newList2.contains(integer)){ 
newList2.add(integer); 

5.

Set set2 = new HashSet(); 
List newList3 = new ArrayList(); 
set2.addAll(list); 
newList3.addAll(set2); 
System.out.println(“set和list转换去重:”+newList3);

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142635.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 海思hi3516ev100开发板_海思V200

    海思hi3516ev100开发板_海思V2001安装ubunu14我的ubuntu14如下#uname-aLinuxubuntu4.4.0-142-generic#168~14.04.1-UbuntuSMPSatJan1911:26:28UTC2019x86_64x86_64x86_64GNU/Linux2软件包安装步骤1.配置默认使用bash执行sudodpkg-recon…

    2022年9月23日
    0
  • 详解第一范式、第二范式、第三范式、BCNF范式

    详解第一范式、第二范式、第三范式、BCNF范式文章目录第一范式定义以及分析:问题研究:第二范式必备知识点函数依赖:码:非主属性:定义分析:解决办法:问题研究:第三范式:定义:分析:问题研究:BCNF范式分析问题研究小结:第一范式定义以及分析:首先是第一范式(1NF)。符合1NF的关系(你可以理解为数据表。“关系模式”和“关系”的区别,类似于面向对象程序设计中”类“与”对象“的区别。”关系“是”关系模式“的一个实例,你可以把”关系”理解…

    2022年6月12日
    30
  • vmd安装包_VMD分子模拟软件下载

    vmd安装包_VMD分子模拟软件下载VMD分子模拟软件可到其官网进行下载。软件介绍VMD是由美国伊利诺大学开发的一款可视化分子模拟软件,相较于NAMD只能完成动力学模拟计算没有图形界面而言,VMD有图形界面,可用于分子建模、视图可视化和生物分子体系(蛋白质、核酸、脂质等)的分析。由于VMD可以读取PDB(ProteinDataBank)文件并能显示相应的结构,其应用能范围扩广到更多的分子体系上。VMD提供了非常多的渲染和着色方法…

    2022年5月25日
    78
  • es6数组方法图解

    es6数组方法图解最近接触了一些web前端开发人员,发现还是很多人不适用es6提供的语义化api。下面分享下看到的图解es6数组方法。很形象的es6数组方法解释:

    2022年6月6日
    33
  • webstorm必装十大插件_vscode webpack

    webstorm必装十大插件_vscode webpack前言作为一个FE开发者,在日常工作中用的最多的可能就是WebStorm与VsCode,我在工作的这几年一直使用的是WebStorm进行开发,今天为大家带来我工作中使用的一些Webstorm插件以及一些可以提效的配置方法,希望能够帮助使用WebStorm的朋友们更加高效工作,多余时间可以多摸摸????!最终效果展示插件推荐下面会详细介绍每一个插件的安装、使用建议,推荐指数✨.ignore:版本管理工具的忽略文件插件插件描述:支持创建多种.ignore文件,会默认设置到需要忽略的文件

    2022年9月7日
    0
  • QFile源码学习笔记

    QFile源码学习笔记之前简单介绍了Qt读写文件Qt之读写文件http://blog.csdn.net/zhuyunfei/article/details/51249378这里记录下自己学习QFile的笔记。1.在Qt之读写文件中,在打开模式中指定未Append模式,发现如果文件不存在会自动创建新文件,在QFile的源码中找到了原因,在open函数的定义中都有如下语句if(mode&Append)mode

    2022年6月11日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号