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

浙公网安备 33010602011771号