精华内容
下载资源
问答
  • 采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集一般的javaList 交、并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的javaList对象,采用java8 lambda表达式流操作则可以不影响原始...

    采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集

    一般的javaList 交、并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的javaList对象,采用java8 lambda表达式流操作则可以不影响原始list对象而得到两个javaList对象的 交、并、差集。

    2020-03-27 请查看新版本测试代码!!:
    https://blog.csdn.net/gzt19881123/article/details/105150375

    具体代码如下:

    
    import static java.util.stream.Collectors.toList;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Test {
    
        public static void main(String[] args) {
            List<String> list1 = new ArrayList();
            list1.add("1111");
            list1.add("2222");
            list1.add("3333");
    
            List<String> list2 = new ArrayList();
            list2.add("3333");
            list2.add("4444");
            list2.add("5555");
    
            // 交集
            List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList());
            System.out.println("---得到交集 intersection---");
            intersection.parallelStream().forEach(System.out :: println);
    
            // 差集 (list1 - list2)
            List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(toList());
            System.out.println("---得到差集 reduce1 (list1 - list2)---");
            reduce1.parallelStream().forEach(System.out :: println);
    
            // 差集 (list2 - list1)
            List<String> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(toList());
            System.out.println("---得到差集 reduce2 (list2 - list1)---");
            reduce2.parallelStream().forEach(System.out :: println);
    
            // 并集
            List<String> listAll = list1.parallelStream().collect(toList());
            List<String> listAll2 = list2.parallelStream().collect(toList());
            listAll.addAll(listAll2);
            System.out.println("---得到并集 listAll---");
            listAll.parallelStream().forEach(System.out :: println);
    
            // 去重并集
            List<String> listAllDistinct = listAll.stream().distinct().collect(toList());
            System.out.println("---得到去重并集 listAllDistinct---");
            listAllDistinct.parallelStream().forEach(System.out :: println);
    
            System.out.println("---原来的List1---");
            list1.parallelStream().forEach(System.out :: println);
            System.out.println("---原来的List2---");
            list2.parallelStream().forEach(System.out :: println);
    
    		// 一般有filter 操作时,不用并行流parallelStream ,如果用的话可能会导致线程安全问题
    
        }
    }
    
    
    展开全文
  • java List去除重复数据的五种方式

    万次阅读 多人点赞 2019-05-31 12:38:30
    以下介绍五种-不同的方法去除Java中ArrayList中的重复数据 1.使用LinkedHashSet删除arraylist中的重复数据 LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事: 删除重复...

     

    以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据

    1.使用LinkedHashSet删除arraylist中的重复数据

    LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:

    • 删除重复数据
    • 保持添加到其中的数据的顺序

    Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字,例如1,3和5.我们将列表添加到LinkedHashSet,然后将内容返回到列表中。结果arraylist没有重复的整数。

    
        public static void main(String[] args) {
            int List[] =[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
            LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(List);
            ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
            System.out.println(listWithoutDuplicates);
    
        }
    
    

    输出结果

    [1, 2, 3, 4, 5, 6, 7, 8]

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

    要从arraylist中删除重复项,我们也可以使用java 8 stream api。使用steam的distinct()方法返回一个由不同数据组成的流,通过对象的equals()方法进行比较。

    收集所有区域数据List使用Collectors.toList()

    Java程序,用于在不使用Set的情况下从java中的arraylist中删除重复项

    public static void main(String[] args){
            int List[] =[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
            List<Integer> listWithoutDuplicates = List.stream().distinct().collect(Collectors.toList());
            System.out.println(listWithoutDuplicates);
        }
    
    

    输出结果

    [1, 2, 3, 4, 5, 6, 7, 8]

     

    3.利用HashSet不能添加重复数据的特性 由于HashSet不能保证添加顺序,所以只能作为判断条件保证顺序:

    private static void removeDuplicate(List<String> list) {
        HashSet<String> set = new HashSet<String>(list.size());
        List<String> result = new ArrayList<String>(list.size());
        for (String str : list) {
            if (set.add(str)) {
                result.add(str);
            }
        }
        list.clear();
        list.addAll(result);
    }



    4.利用List的contains方法循环遍历,重新排序,只添加一次数据,避免重复:

    private static void removeDuplicate(List<String> list) {
        List<String> result = new ArrayList<String>(list.size());
        for (String str : list) {
            if (!result.contains(str)) {
                result.add(str);
            }
        }
        list.clear();
        list.addAll(result);
    }

    5.双重for循环去重 

    
    public static void main(String[] args) {
    	int List[] = [1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
    	for (int i = 0; i < List.size(); i++) {
    		for (int j = i + 1; j < List.size(); j++) {
    			if (List.get(i) == List.get(j)) {
    				List.remove(j);
    				j--;
    			}
    		}
    	}
    }


     

    展开全文
  • java List的初始化

    万次阅读 多人点赞 2017-02-23 14:25:31
    java List<String>的初始化

    今天在处理生成excel的时候用到了java的list,但是需要直接赋值固定的几个变量,如果先初始化然后add的方法:

    List<String> name = new ArrayList();

    name.add("xxx");

    name.add("yyy");

    name.add("zzz");

    这样的方法似乎有点蠢,于是默默搜了下java list


    这个是list的官方文档的样子,可以看到大大的“Interface List<E>”。所以说List<String>不能直接实例化,而它有许多子类,AbstractListAbstractSequentialListArrayListAttributeListCopyOnWriteArrayListLinkedListRoleListRoleUnresolvedListStackVector等。详见此处

    这里需要用的是ArrayList。

    所以初始化一个list当然可以用List<String> name = new ArrayList();然后根据需求慢慢add。

    然而有木有更简洁的方法呢?如下


    List<String> name = Arrays.asList("xxx","yyy","zzz");(不过这样的话这个list的size就固定了,不能再add了,要注意。)

    or

    List<String> name = new ArrayList<>(Arrays.asList("xxx","yyy","zzz"));



    附上Stack Overflow地址 

    展开全文
  • JavaList集合add与set方法原理简介 add方法 add方法用于向集合列表中添加对象。 语法1 用于在列表的尾部插入指定元素。如果List集合对象由于调用add方法而发生更改,则返回true;否则返回false。add(Ee)e:要添加到...

    Java List集合add与set方法原理简介

    add方法

    add方法用于向集合列表中添加对象。

    语法1

    用于在列表的尾部插入指定元素。如果List集合对象由于调用add方法而发生更改,则返回 true;否则返回false。add(E e) e:要添加到列表中的元素。

    实例

     

    public static void main(String[] args) {
        List<String> list=new ArrayList<String>();
        list.add("保护环境");     //向列表中添加数据
        list.add("爱护地球");     //向列表中添加数据
        list.add("从我做起");     //向列表中添加数据
        //通过循环输出列表中的内容
        for(int i=0;i<list.size();i++){
         System.out.println(i+":"+list.get(i));
        }
    }

     

    语法2

    用于在列表的指定位置插入指定元素,并将当前处于该位置的元素及其后续元素的索引加1。void add(int index, E element)

    index:用于指定在其中插入指定元素处的索引。

    element:用于指定要插入的元素。

    索引值从0开始。

    set方法

    Set方法用于替换集合列表中的元素。

    void set(int index, E element)

    将index索引处的元素替换成element对象,并返回新元素。

    展开全文
  • java List基本操作

    万次阅读 多人点赞 2019-06-03 17:15:42
    Java List中的常用操作: list中添加,获取,删除元素; list中是否包含某个元素; list中根据索引将元素数值改变(替换); list中查看(判断)元素的索引; 根据元素索引位置进行的判断; 利用list中索引位置...
  • Java List的remove()方法陷阱以及性能优化

    万次阅读 多人点赞 2019-05-25 17:55:02
    Java List在进行remove()方法是通常容易踩坑,主要有一下几点 循环时:问题在于,删除某个元素后,因为删除元素后,后面的元素都往前移动了一位,而你的索引+1,所以实际访问的元素相对于删除的元素中间间隔了一位...
  • Java List集合深入学习

    千次阅读 多人点赞 2018-10-29 07:25:39
    Java List是一个有序集合。Java List是扩展Collection接口的接口。Java List提供对可插入元素的位置的控制。您可以按索引访问元素,也可以搜索列表中的元素。 目录 Java列表 Java列表类图 Java列表方法 要列出...
  • java list倒序输出及复制list集合

    千次阅读 2018-05-14 10:22:19
    有时我们需要把java list集合倒序输入,java list倒序输出其实很简单,就一行代码就可以把原有的list倒序过来了如原来有一个集合listlist里面是有数据的,现在如果把list
  • java list之间的赋值

    千次阅读 2018-02-08 14:05:50
    Java List之间的赋值 创建两个list list_1和list_2 list_2=list_1; 这里实际上是list_2和list_1的内存地址是相同的 代码: import java.util.ArrayList; import java.util.List; public class Main { public ...
  • java list移除null元素

    千次阅读 2017-04-13 14:34:25
    java list移除null元素
  • JAVA List 对象赋值

    万次阅读 2015-04-24 13:56:37
    JAVA List对象如果直接使用“=”进行赋值,比如 如下代码: Listlist1 = new ArrayList(); Listlist2 = new ArrayList(); list2 = list1; if(list1 == list2){ System.out.println("ok"); } else { ...
  • Java List和Array之间的转换

    万次阅读 多人点赞 2019-06-21 17:15:25
    1.实现方法 :java中数组转list使用Arrays.asList(T... a)方法。 public class Array2List { public static void main(String[] args){ List<String> listA=Arrays.asList("dog","cat","cow")...
  • java list toString()的坑

    千次阅读 2019-06-17 10:20:54
    今天发现Java list直接调用toString()方法是有坑的,比如: List<String> list = Arrays.asList("123", "456", "789"); 打印System.out.print(list.toString())发现结果为[123, 456, 789]发现问题了没?在123...
  • java List复制:浅拷贝与深拷贝

    万次阅读 2018-07-05 10:05:56
    原文地址:...如上图将list A浅拷贝给list B,由于进行的是浅拷贝,所以直接将A的内容复制给了B,java中相同内容的数组指向同一地址,即进行浅拷贝后A与B指向同一地址。造成的后果就是,改变B的同时...
  • Java List去掉重复对象Java8

    万次阅读 2018-07-20 10:50:18
    一、去除List中重复的String Set&lt;String&gt; set = new LinkedHashSet&lt;&... set.addAll(list);...或使用Java8的写法: List&lt;String&gt; list = list.stream().distinc...
  • Java List合并去重

    万次阅读 多人点赞 2013-02-21 16:28:30
    看了下Java List、Collection的API,没找到合适的于是乎,遍历A、B中元素个数较少的,往另一个集合中add,当然add时候判断下,有了就别add了 我们架构师的反应: A.removeAll(B);A.addAll
  • 关于java List的深度克隆 Listjava容器中最常用的顺序存储数据结构之一。有些时候我们将一组数据取出放到一个List对象中,但是可能会很多处程序要读取他或者是修改他。尤其是并发处理的话,显然有的时候有一组...
  • java list 分组求和 java8

    千次阅读 2019-06-22 12:10:28
    //list 分组求和 java8 Map<String, LongSummaryStatistics> newLog = stockLogs.stream().collect( Collectors.groupingBy( S...
  • Java List的remove()方法陷阱

    万次阅读 多人点赞 2019-06-13 09:30:16
    JavaList在删除元素时,一般会用list.remove(o)/remove(i)方法。在使用时,容易触碰陷阱,得到意想不到的结果。总结以往经验,记录下来与大家分享。 首先初始化List,代码如下: package com.cicc.am.test; ...
  • Java List 用法

    千次阅读 2018-10-15 19:53:03
    list中可以添加任何对象,我可以给你举个例子: class Person{ … } 上面定义了一个Person类,下面看好如何使用List Person p1=new Person(); Person p2=new Person(); List list=new ArrayList(); list.add...
  • java List里面放的是一个个map 如何遍历 获取全部map的key,value, 效率最优
  • Java List Map转换成List T

    千次阅读 2018-07-26 16:36:58
    List&lt;Object[]&gt; 转换成一个List&lt;T&gt; 工具类,代码如下: ListMapToBeanUtils.java文件: ...import java.lang.reflect.Field;...import java.util.List; import java....
  • Java List.addAll()方法:添加所有元素到列表中 Java 集合类的 List.addAll() 方法用于将指定 collection 中的所有元素添加到列表。 语法1 用于将指定 collection 中的所有元素添加到列表的尾部。如果 List 集合对象...
  • Java list的用法排序及遍历

    千次阅读 2015-12-30 18:07:30
    Java list的用法排序及遍历 list遍历排序用法java 概要: List中可以添加任何对象,包括自己定义的新的类。 List的常用实现类有:ArrayList和LinkedList。 | |目录 用法 ArrayList public static
  • java List转Map的方式(jdk1.8)

    千次阅读 2020-04-23 11:12:49
    java List转Map的方式(jdk1.8): 在很多时候,我们还是需要将list转换成map的,但是普通的for循环那块,是效率不高的。 使用JDK1.8 Map<Long, User> maps = userList.stream().collect(Collectors.toMap...
  • Java List Object[]转换成List T

    万次阅读 2018-07-24 18:43:56
    List&lt;Object[]&gt; 转换成一个List&lt;T&gt; 工具类,代码如下: ObjectConvertUtils.java文件: ...import java.lang.reflect.Constructor;...import java.util.List; /** * ...
  • java List的各种操作

    千次阅读 2020-08-06 11:20:31
    import java.util.List; import java.util.stream.Collectors; public class ListTools { // 验证字符串是否包含集合中的某一字符串(list有空字符串的话,结果始终为true) public static boolean list_...
  • Java List.add()方法:向集合列表中添加对象 Java 集合类中的 List.add() 方法用于向集合列表中添加对象。 语法1 用于在列表的尾部插入指定元素。如果 List 集合对象由于调用 add 方法而发生更改,则返回 true;否则...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 203,254
精华内容 81,301
关键字:

javalist

java 订阅