java8如何取出List<T>和List<U>中全部元素并合并成List<Pair<T,U>输出
时间: 2024-05-10 14:15:44 浏览: 92
可以使用 Java 8 的 Stream API 来实现合并:
```
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<String> list2 = new ArrayList<>();
list2.add("A");
list2.add("B");
list2.add("C");
List<Pair<Integer, String>> result = merge(list1, list2);
System.out.println(result);
}
public static <T, U> List<Pair<T, U>> merge(List<T> list1, List<U> list2) {
return list1.stream()
.flatMap(t -> list2.stream()
.map(u -> new Pair<>(t, u)))
.collect(Collectors.toList());
}
static class Pair<T, U> {
private T first;
private U second;
public Pair(T first, U second) {
this.first = first;
this.second = second;
}
public T getFirst() {
return first;
}
public U getSecond() {
return second;
}
@Override
public String toString() {
return "(" + first + ", " + second + ")";
}
}
}
```
在 merge 方法中,我们使用了 Stream 的 flatMap 和 map 操作,将 List1 中的每个元素与 List2 中的每个元素配对成一个 Pair<T, U> 对象,并将所有的 Pair 对象收集到一个新的 List 中返回。注意,Pair 是自定义的一个简单的 key-value 对象,需要自己定义。
阅读全文