stream()怎么获取list集合中对象的属性数组
时间: 2024-02-20 20:00:47 浏览: 77
可以使用Java 8中的流(Stream)和映射(map)操作来获取List集合中对象的属性数组。具体实现如下:
假设有一个List集合,其中存放了多个对象,每个对象都有一个属性名为"property",类型为String。现在需要获取这些对象的"property"属性值组成的数组,可以使用以下代码实现:
```
List<Object> list = ... //获取List集合
String[] properties = list.stream().map(obj -> obj.getProperty()).toArray(String[]::new);
```
其中,`list.stream()`将List集合转换为Stream流,`map(obj -> obj.getProperty())`将对象映射为其"property"属性值,`toArray(String[]::new)`将映射后的结果转换为String类型的数组。
相关问题
JAVA List集合转成Long数组
将Java List集合转换为Long数组可以使用Java 8中添加的流(Stream)API,具体步骤如下:
1. 创建一个List集合并添加元素:
```java
List<Long> list = new ArrayList<>();
list.add(1L);
list.add(2L);
list.add(3L);
```
2. 使用流API将List转换为Long数组:
```java
Long[] array = list.stream().toArray(Long[]::new);
```
这里使用了`stream()`方法将List集合转换为流,并使用`toArray()`方法将流转换为数组。在`toArray()`方法中,我们需要传递一个构造函数引用,以告诉Java如何创建Long数组。
如果你使用的是Java 7或更早版本,可以使用以下代码将List转换为Long数组:
```java
Long[] array = list.toArray(new Long[list.size()]);
```
这里直接使用了List的`toArray()`方法,并传递一个Long类型的数组作为参数。注意,我们需要在数组大小中传递List集合的大小,以确保数组足够大来存储所有元素。
stream去除map集合中数组
在Java中,如果你有一个`Map<String, List<Object>>`这样的集合,想要通过`Stream` API 来移除其中特定键对应的整个数组列表,你可以这样做:
```java
Map<String, List<Object>> map = ...; // 初始化你的地图
// 使用Java 8 Stream API 的 filter 和 removeIf 函数
Optional.ofNullable(map.get(key)) // 首先检查键是否存在
.ifPresent(list -> list.removeIf(item -> item.equals(arrayToRemove))); // 如果存在,删除匹配的元素
// 或者,如果你想直接替换掉该键对应的所有列表,可以使用 replaceValues:
map.replace(key, list.stream()
.filter(item -> !item.equals(arrayToRemove))
.collect(Collectors.toList()));
```
这里假设`arrayToRemove`是你想从每个列表中移除的具体数组。如果这个数组不存在于列表中,`removeIf`不会有任何影响。
阅读全文