Java 现在有list<String>A 和list<String>B,把A集合独有的元素放入List<String>AA,B集合独有的元素放入List<BB>BB,AB共有的放入List<AB>AB
时间: 2023-11-11 20:10:40 浏览: 171
可以使用Java自带的集合操作来实现这个需求,具体代码如下:
```java
List<String> A = Arrays.asList("a", "b", "c");
List<String> B = Arrays.asList("b", "c", "d");
List<String> AA = new ArrayList<>(A);
AA.removeAll(B);
List<String> BB = new ArrayList<>(B);
BB.removeAll(A);
List<String> AB = new ArrayList<>(A);
AB.retainAll(B);
System.out.println("AA: " + AA); // 输出:AA: [a]
System.out.println("BB: " + BB); // 输出:BB: [d]
System.out.println("AB: " + AB); // 输出:AB: [b, c]
```
这里用到了List的removeAll()和retainAll()方法,它们分别可以去除两个集合的交集和差集。
相关问题
java 现在有list<String>A 和list<String>B,现在请写一个方法,把A集合独有的元素放入AA,B集合独有的元素放入BB,AB共有的放入AB
可以使用 Java 中的 Set 集合来实现这个功能。具体实现代码如下:
```java
public static void splitList(List<String> A, List<String> B, List<String> AA, List<String> BB, List<String> AB) {
Set<String> setA = new HashSet<>(A);
Set<String> setB = new HashSet<>(B);
for (String str : setA) {
if (!setB.contains(str)) {
AA.add(str);
} else {
AB.add(str);
}
}
for (String str : setB) {
if (!setA.contains(str)) {
BB.add(str);
}
}
}
```
调用该方法:
```java
List<String> A = Arrays.asList("a", "b", "c", "d");
List<String> B = Arrays.asList("c", "d", "e", "f");
List<String> AA = new ArrayList<>();
List<String> BB = new ArrayList<>();
List<String> AB = new ArrayList<>();
splitList(A, B, AA, BB, AB);
System.out.println("A 独有元素:" + AA);
System.out.println("B 独有元素:" + BB);
System.out.println("AB 共有元素:" + AB);
```
输出结果:
```
A 独有元素:[a, b]
B 独有元素:[e, f]
AB 共有元素:[c, d]
```
Map<String, String> map = new HashMap<>(); map.put("a", "A"); map.put("b", "B"); List<AA> list = Arrays.asList( new AA("1", "a"), new AA("b", "b"), new AA("1", "c"), new AA("1", "d")); Map<String, List<String>> typeMap = list.stream().collect(Collectors.groupingBy(AA::getName, Collectors.mapping(o -> map.get(o.getNum()), Collectors.toList()))); typeMap.forEach((k, v) -> System.out.println(k + ":::" + v)); 会出现null在List集合中
在这段代码中,如果 `map` 中不存在某个 `AA` 对象的 `num` 对应的值,那么 `Collectors.mapping(o -> map.get(o.getNum()), Collectors.toList())` 返回的结果是 `null`,因此在 `typeMap` 中会出现 `null` 值。
为了避免出现 `null` 值,可以在 `mapping` 中使用 `Optional` 类型来处理可能返回 `null` 的情况。例如:
```
Collectors.mapping(o -> Optional.ofNullable(map.get(o.getNum())).orElse(""), Collectors.toList())
```
这样,如果 `map.get(o.getNum())` 返回 `null`,则将默认值 `""` 作为结果。
阅读全文