java8如何取出List<T>和List<U>中全部元素并合并成List<Pair<T,U>输出】
时间: 2024-05-16 22:16:00 浏览: 17
可以使用Java 8中的Stream API来实现。具体代码如下:
```java
List<T> list1 = ... // 第一个List
List<U> list2 = ... // 第二个List
List<Pair<T, U>> result = IntStream.range(0, Math.min(list1.size(), list2.size()))
.mapToObj(i -> new Pair<>(list1.get(i), list2.get(i)))
.collect(Collectors.toList());
```
这里使用了IntStream.range()方法来生成一个从0到两个List中元素数量的较小值之间的整数流。然后使用mapToObj()方法将每个整数映射成一个包含两个List中相应元素的Pair对象。最后使用collect()方法将这些Pair对象收集到一个List中并返回。需要注意的是,如果两个List中元素数量不一致,则只会处理前面共有的元素。
相关问题
java8如何取出List<T>和List<U>中全部元素并合并成List<Pair<T,U>输出
可以使用 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 对象,需要自己定义。
如何取出Pair<List<T>,List<U>>中的T和U
可以使用以下方式取出Pair<List<T>,List<U>>中的T和U:
```java
Pair<List<T>, List<U>> pair = new Pair<>(listT, listU);
List<T> listT = pair.first;
List<U> listU = pair.second;
```
其中,Pair类是Android SDK中的一个类,用于封装一对值。first表示第一个值,second表示第二个值。因此,我们可以通过pair.first取出List<T>,通过pair.second取出List<U>。