list对象返回一个map 用javastream流
时间: 2024-05-11 18:15:20 浏览: 8
可以使用Java 8中的Stream API的collect()方法来将List对象转换为Map对象。下面是一个示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class ListToMapExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "orange", "pear");
// Convert List to Map using Stream API
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(s -> s, String::length));
System.out.println(map);
}
}
```
在这个示例中,我们首先创建了一个字符串列表,然后使用流的collect()方法将其转换为Map对象。在collect()方法中,我们使用toMap()方法,其中第一个参数是键的生成函数,第二个参数是值的生成函数。在这个例子中,我们将每个字符串作为键,并使用String类的length()方法作为值。最终,我们打印出Map对象,它将每个字符串作为键,字符串长度作为值。
相关问题
java stream流 获取对象中的某一个属性 并去空格
假设你有一个对象列表,每个对象都有一个名为"name"的字符串属性,你可以使用Java 8中的Stream API来获取这个属性并去除空格,代码如下:
```java
List<MyObject> myList = ...; // your list of objects
List<String> names = myList.stream()
.map(MyObject::getName) // get the "name" property
.map(String::trim) // remove whitespace
.collect(Collectors.toList()); // collect the results into a list
```
其中,`MyObject`是你的对象类,`getName()`是返回对象名字属性的方法。使用`map()`方法将每个对象映射成名字属性,使用`trim()`方法去除空格,最后使用`collect()`方法将结果收集到一个列表中。
java list<map> stream流 按多个字段分组
可以使用Java 8中的Stream API,使用Collectors.groupingBy()方法按照多个字段进行分组。例如,假设我们有一个List<Map<String, Object>>,其中每个Map都包含两个字段:name和age。我们想按照这两个字段进行分组,可以使用以下代码:
List<Map<String, Object>> list = new ArrayList<>();
// 假设list中有多个Map对象,每个Map对象都包含name和age两个字段
Map<String, Map<Integer, List<Map<String, Object>>>> result = list.stream()
.collect(Collectors.groupingBy(
m -> m.get("name").toString(),
Collectors.groupingBy(
m -> Integer.parseInt(m.get("age").toString())
)
));
这将返回一个Map对象,其中键是name字段的值,值是另一个Map对象,其中键是age字段的值,值是具有相同name和age值的Map对象的列表。