用java8 stream,把List<B>中B的某个属性判断不为null后放到list<String>中,给出示例
时间: 2024-05-10 18:21:20 浏览: 18
假设B类中有一个属性为name,可以使用Java 8 Stream将List<B>中的name属性不为null的B对象提取出来,放到一个List<String>中,示例如下:
```
List<B> bList = Arrays.asList(new B("name1"), new B(null), new B("name3"));
List<String> nameList = bList.stream()
.filter(b -> b.getName() != null) // 判断name属性不为null
.map(B::getName) // 提取name属性
.collect(Collectors.toList()); // 放到List<String>中
System.out.println(nameList); // 输出 [name1, name3]
```
其中B类的定义如下:
```
public class B {
private String name;
public B(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
```
相关问题
java8的stream中有list<map> 中map中的某个key 等于几时停止流返回0
可以使用 `Stream.anyMatch` 方法判断列表中是否存在指定 key 的值等于指定值的 map,如果存在则直接返回 0,否则继续使用流求和。具体实现代码如下:
```java
List<Map<String, Object>> list = ... // 列表数据
int sum = list.stream()
.peek(map -> {
if ("指定值".equals(map.get("指定 key"))) {
throw new RuntimeException("存在指定 key 的值等于指定值的 map");
}
})
.filter(map -> map.get("otherKey") != null)
.mapToInt(map -> Integer.parseInt(map.get("otherKey").toString()))
.sum();
return sum;
```
上述代码中,使用 `peek` 方法在流中的每一个 map 中进行判断,如果指定 key 的值等于指定值,则抛出异常,停止流的处理。在下一个操作中使用 `filter` 方法过滤另一个 key 为空的 map,然后使用 `mapToInt` 方法将另一个 key 转换为一个 IntStream,最后使用 `sum` 方法求和。
用java8写一个当List<B>中多个字段与List<A>进行match,match成功时,将match到的List<A>和List<B>出力的共通方法
假设List<A>和List<B>中都有一个属性名为"field",可以使用Java 8的stream和Lambda表达式来实现:
```java
public static void match(List<A> listA, List<B> listB) {
Map<String, List<A>> mapA = listA.stream().collect(Collectors.groupingBy(A::getField));
Map<String, List<B>> mapB = listB.stream().collect(Collectors.groupingBy(B::getField));
mapA.forEach((k, v) -> {
List<B> matchedB = mapB.get(k);
if (matchedB != null) {
System.out.println("Matched List A:");
v.forEach(System.out::println);
System.out.println("Matched List B:");
matchedB.forEach(System.out::println);
}
});
}
```
首先,将List<A>和List<B>转换为Map<String, List<A>>和Map<String, List<B>>,其中String为"field"属性的值,List为具有相同"field"属性值的对象列表。
然后,遍历Map<String, List<A>>,对于每个键值对,从Map<String, List<B>>中获取具有相同键的对象列表,并输出匹配到的List<A>和List<B>。
相关推荐
![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)