Stream常用工具

文章目录

        • int[] 转 List
        • int[] 转 Integer[]
        • List 转 Integer[]
        • List 转 int[]
        • Integer[] 转 int[]
        • Integer[] 转 List
        • Stream操作list并交差集

int[] 转 List

        // Arrays.stream(arr) 可以替换成IntStream.of(arr)。
        // 1.使用Arrays.stream将int[]转换成IntStream。
        // 2.使用IntStream中的boxed()装箱。将IntStream转换成Stream
        // 3.使用Stream的collect(),将Stream转换成List,因此正是List
        int[] data = {4, 5, 3, 6, 2, 5, 1};
        List<Integer> list = Arrays.stream(data).boxed().collect(Collectors.toList());

int[] 转 Integer[]

		//使用Stream的toArray,传入IntFunction generator。
		// 这样就可以返回Integer数组。
        // 不然默认是Object[]。
		int[] data = {4, 5, 3, 6, 2, 5, 1};
        Integer[] integer = Arrays.stream(data).boxed().toArray(Integer[]::new);

List 转 Integer[]

        //调用toArray。传入参数T[] a。
        Integer[] integer = list.toArray(new Integer[0]);

List 转 int[]

        // 这里就通过mapToInt()把Stream调用Integer::valueOf来转成IntStream
        // 而IntStream中默认toArray()转成int[]。
        int[] arr = list.stream().mapToInt(Integer::valueOf).toArray();

Integer[] 转 int[]

		//先将Integer[]转成Stream,再转成IntStream。
        int[] arr = Arrays.stream(integer).mapToInt(Integer::valueOf).toArray();

Integer[] 转 List

        List<Integer> list = Arrays.asList(integer);

Stream操作list并交差集

        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(Collectors.toList());
        System.out.println("---得到交集 intersection---");
        intersection.parallelStream().forEach(System.out :: println);

        // 差集 (list1 - list2)
        List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.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(Collectors.toList());
        System.out.println("---得到差集 reduce2 (list2 - list1)---");
        reduce2.parallelStream().forEach(System.out :: println);

        // 并集
        List<String> listAll = list1.parallelStream().collect(Collectors.toList());
        List<String> listAll2 = list2.parallelStream().collect(Collectors.toList());
        listAll.addAll(listAll2);
        System.out.println("---得到并集 listAll---");
        listAll.parallelStream().forEach(System.out :: println);

        // 去重并集
        List<String> listAllDistinct = listAll.stream().distinct().collect(Collectors.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);

你可能感兴趣的:(java基础,工具)