提取javaList集合对象中不为空的字符串
时间: 2023-05-19 15:05:21 浏览: 102
可以使用Java 8的Stream API来实现这个功能,具体代码如下:
List<String> list = Arrays.asList("hello", null, "world", null, "java");
List<String> result = list.stream()
.filter(str -> str != null && !str.isEmpty())
.collect(Collectors.toList());
System.out.println(result);
输出结果为:[hello, world, java]
这段代码首先将一个包含了null和空字符串的List<String>对象创建出来,然后使用Stream API中的filter()方法过滤掉了其中的null和空字符串,最后使用collect()方法将过滤后的结果收集到一个新的List<String>对象中。
相关问题
java对象集合如何提取所有的id变成一个字符串集合
你可以使用Java中的流(Stream)和映射(Map)操作来提取Java对象集合中的所有id,并将它们转化为一个字符串集合。以下是一种可能的实现方式:
```java
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<YourObject> yourObjects = ...; // 你的对象集合
List<String> idList = yourObjects.stream()
.map(YourObject::getId)
.map(Object::toString) // 可选,如果id不是字符串类型,可以将其转换为字符串
.collect(Collectors.toList());
System.out.println(idList);
}
// 定义你的对象类
static class YourObject {
private int id;
public YourObject(int id) {
this.id = id;
}
public int getId() {
return id;
}
}
}
```
在这个例子中,假设你有一个名为`YourObject`的对象类,其中包含一个`id`属性。你可以用自己的对象类替换示例中的`YourObject`类。
首先,使用`stream()`方法将对象集合转换为流。然后,使用`map()`方法将每个对象映射为其id属性。如果id属性不是字符串类型,你可以在第二个`map()`方法中将其转换为字符串。最后,使用`collect()`方法将结果收集到一个字符串集合中。
请注意,这里使用了Java 8及更高版本中引入的流(Stream)和映射(Map)操作。如果你使用的是更早版本的Java,你可以使用传统的循环来实现相同的功能。
java8一个字符串集合A和一个对象集合B,过滤掉A集合中存在B集合对象ID的数据
可以使用Java 8的流操作和Lambda表达式来实现这个需求。具体步骤如下:
1. 将B集合中所有对象的ID提取出来,转为一个Set集合,方便后续的过滤操作。
```
Set<Integer> bIds = b.stream()
.map(bObj -> bObj.getId())
.collect(Collectors.toSet());
```
2. 对A集合进行过滤,只保留ID不在bIds集合中的字符串。
```
List<String> filteredA = a.stream()
.filter(aStr -> !bIds.contains(Integer.parseInt(aStr)))
.collect(Collectors.toList());
```
最终得到的filteredA集合就是过滤后的结果。完整代码如下:
```
Set<Integer> bIds = b.stream()
.map(bObj -> bObj.getId())
.collect(Collectors.toSet());
List<String> filteredA = a.stream()
.filter(aStr -> !bIds.contains(Integer.parseInt(aStr)))
.collect(Collectors.toList());
```
阅读全文