java stream操作

泛化=实现>组合=聚合>关联>依赖

https://blog.csdn.net/tianhai110/article/details/6339565

1 List 转换

1 List -> String[]

List<String> list1 = Arrays.asList("5", "3", "4", "1", "2");

String[] arr1 = list1.toArray(String[]::new);
System.out.println(Arrays.toString(arr1));
1234
[5, 3, 4, 1, 2]
1

2 List -> String

List<String> list1 = Arrays.asList("5", "3", "4", "1", "2");

String str1 = list1.stream().collect(Collectors.joining("-"));
System.out.println(str1);

String str2 = String.join("-", list1);
System.out.println(str1);
1234567
5-3-4-1-2
5-3-4-1-2
12

3 List -> List

List<String> list1 = Arrays.asList("5", "3", "4", "1", "2");

List<Integer> list2 = list1.stream().map(Integer::valueOf).collect(Collectors.toList());
list2.forEach(e -> System.out.print(e + "\t"));
1234
5	3	4	1	2	
1

4 List -> Integer[]

List<String> list1 = Arrays.asList("5", "3", "4", "1", "2");

Integer[] int1 = list1.stream().map(Integer::valueOf).toArray(Integer[]::new);
System.out.println(Arrays.toString(int1));
1234
[5, 3, 4, 1, 2]
1

5 List -> int[]

List<String> list1 = Arrays.asList("5", "3", "4", "1", "2");

int[] int2 = list1.stream().mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(int2));
1234
[5, 3, 4, 1, 2]
1

6 List -> Integer[]

List<String> list1 = Arrays.asList("5", "3", "4", "1", "2");

Integer[] int3 = list1.stream().map(Integer::valueOf).toArray(Integer[]::new);
System.out.println(Arrays.toString(int3));
1234
[5, 3, 4, 1, 2]
1

7 List -> int[]

List<String> list1 = Arrays.asList("5", "3", "4", "1", "2");

int[] int4 = list1.stream().mapToInt(Integer::valueOf).toArray();
System.out.println(Arrays.toString(int4));
1234
[5, 3, 4, 1, 2]
1

8 int[] -> List

List<Integer> int5 = IntStream.of(1, 2, 3, 4, 5, 6).boxed().collect(Collectors.toList());
int5.forEach(e -> System.out.print(e + "\t"));
12
1	2	3	4	5	6	
1

9 int[] -> Integer[]

Integer[] int6 = IntStream.of(1, 2, 3, 4, 5, 6, 7).boxed().toArray(Integer[]::new);
System.out.println(Arrays.toString(int6));
12
[1, 2, 3, 4, 5, 6, 7]
1

2 差集、并集、交集

操作 方法
交集 list1.retainAll(list2)
并集 list1.removeAll(list2),list1.addAll(list2)
差集 list1.removeAll(list2)

2.1 交集

2.1.1 交集 lambda

List<String> list1 = new ArrayList<>() {{
    add("A");
    add("B");
    add("C");
    add("D");
    add("E");
}};
List<String> list2 = new ArrayList<>() {{
    add("D");
    add("E");
    add("F");
    add("H");
    add("I");
}};

List<String> list3 = list1.stream().filter(list2::contains).collect(Collectors.toList());
list3.forEach(e -> System.out.print(e + "\t"));
1234567891011121314151617
D	E	
1

2.1.1 交集 list

List<String> list1 = new ArrayList<>() {{
    add("A");
    add("B");
    add("C");
    add("D");
    add("E");
}};
List<String> list2 = new ArrayList<>() {{
    add("D");
    add("E");
    add("F");
    add("H");
    add("I");
}};

list1.retainAll(list2);
list1.forEach(e -> System.out.print(e + "\t"));
System.out.println();
123456789101112131415161718
D	E	
1

2.2 并集(去重)

2.2.1 lambda 并集(去重)

List<String> list1 = new ArrayList<>() {{
    add("A");
    add("B");
    add("C");
    add("D");
    add("E");
}};
List<String> list2 = new ArrayList<>() {{
    add("D");
    add("E");
    add("F");
    add("H");
    add("I");
}};
        
List<String> list4 = list3.stream().distinct().collect(Collectors.toList());
list4.forEach(e -> System.out.print(e + "\t"));
1234567891011121314151617
A	B	C	D	E	F	H	I	
1

2.2.1 list 并集(去重)

List<String> list1 = new ArrayList<>() {{
    add("A");
    add("B");
    add("C");
    add("D");
    add("E");
}};
List<String> list2 = new ArrayList<>() {{
    add("D");
    add("E");
    add("F");
    add("H");
    add("I");
}};

list1.removeAll(list2);
list1.addAll(list2);
list1.forEach(e -> System.out.print(e + "\t"));
123456789101112131415161718
A	B	C	D	E	F	H	I	
1

2.3 差集

差集的结果 和 list 的顺序有关系

2.3.1 lambda 差集

List<String> list1 = new ArrayList<>() {{
    add("A");
    add("B");
    add("C");
    add("D");
    add("E");
}};
List<String> list2 = new ArrayList<>() {{
    add("D");
    add("E");
    add("F");
    add("H");
    add("I");
}};

List<String> list3 = list1.stream().filter(e -> !list2.contains(e)).collect(Collectors.toList());
list3.forEach(e -> System.out.print(e + "\t"));
1234567891011121314151617
A	B	C	
1

2.3.2 list 差集

List<String> list1 = new ArrayList<>() {{
    add("A");
    add("B");
    add("C");
    add("D");
    add("E");
}};
List<String> list2 = new ArrayList<>() {{
    add("D");
    add("E");
    add("F");
    add("H");
    add("I");
}};

list1.removeAll(list2);
list1.forEach(e -> System.out.print(e + "\t"));
1234567891011121314151617
A	B	C	
posted @ 2022-08-25 18:41  Ronald Hu  阅读(69)  评论(0)    收藏  举报