用stream流拿到类中的元素,然后这个元素查找别的类的元素,最后转为map
时间: 2024-05-03 10:20:21 浏览: 13
您好,对于您的问题,您可以使用Java 8的Stream API来实现:
假设您有以下两个类:
```java
public class ClassA {
private int id;
private String name;
// 构造方法,getter和setter省略
}
public class ClassB {
private int aId;
private int bId;
private String description;
// 构造方法,getter和setter省略
}
```
现在假设您有一个List<ClassA>,您想要将其中的元素转化为Map<Integer, List<String>>,其中key是ClassA的id,value是ClassB的description列表,其中的ClassB元素的aId等于对应的ClassA元素的id。您可以使用如下的代码:
```java
List<ClassA> listA = Arrays.asList(
new ClassA(1, "A1"),
new ClassA(2, "A2"),
new ClassA(3, "A3")
);
List<ClassB> listB = Arrays.asList(
new ClassB(1, 11, "B11"),
new ClassB(1, 12, "B12"),
new ClassB(2, 21, "B21"),
new ClassB(2, 22, "B22"),
new ClassB(3, 31, "B31")
);
Map<Integer, List<String>> resultMap = listA.stream().collect(Collectors.toMap(
ClassA::getId, // key是ClassA的id
a -> listB.stream()
.filter(b -> b.getAId() == a.getId()) // 找到所有的ClassB元素,其中的aId等于对应的ClassA元素的id
.map(ClassB::getDescription) // 将所有的ClassB元素转化为description
.collect(Collectors.toList()) // 将所有的description组成一个List
));
```
这段代码运行结果如下:
```java
{1=[B11, B12], 2=[B21, B22], 3=[B31]}
```
这是一个以ClassA的id为key,以所有对应的ClassB元素的description组成的列表为value的Map。
希望这可以帮助到您。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)