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

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • nextint() java_java中random.nextint()的用法

    nextint() java_java中random.nextint()的用法java中random.nextint()的用法发布时间:2020-06-1514:41:57来源:亿速云阅读:193作者:鸽子random.nextInt()的用法1、不带参数的nextInt()会生成所有有效的整数(包含正数,负数,0)2、带参的nextInt(intx)则会生成一个范围在0~x(不包含X)内的任意正整数例如:intx=newRandom.nextInt(100);则x…

  • 前端开发电脑配置(做前端用什么笔记本电脑)

    我们在刚入职的时候,公司会让我们自己来配置电脑。下面是一些实用性的软件。1.VisualStudioCode这是我们前端开发人员相对来说最多使用的代码编辑器了,可以下载各种插件来辅助我们编写代码。下载链接:https://code.visualstudio.com/.2.Chrome浏览器谷歌浏览器,是目前最全面的浏览器,对我们写的代码非常友好,包括也支持各种各样的插件。下载链接:https://www.google.cn/chrome/.注:我这个是安装了csdn出品的插件

  • CGLIB详解(最详细)

    CGLIB详解(最详细)转载地址:https://blog.csdn.net/danchu/article/details/70238002什么是CGLIBCGLIB是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比…

  • 指针函数和函数指针(附实例详解)

    指针函数和函数指针(附实例详解)指针函数和函数指针(附实例详解)

  • [Android] Bitmap内存在各系统版本的演化

    聚焦的问题1、Bitmap的像素数据是存在哪里的?2、Bitmap内存如何释放?需要调用recycle吗?Bitmap bitmap = Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);以这样声明一个bitmap为例,有三个位置需要关注,bitmap引用本身所在的位置(栈),引用指向的对象所在的位置(堆),对象中持有的像素数据所在的…

  • 缓存穿透,缓存击穿,缓存雪崩解决方案分析

    缓存穿透,缓存击穿,缓存雪崩解决方案分析前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案

发表回复

您的电子邮箱地址不会被公开。

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