lamda表达式 对 List<Map<String, Object>> 取值并创建新的list
时间: 2024-03-03 10:47:38 浏览: 136
使用 Lambda 表达式对 List<Map<String, Object>> 中所有 Map 对象中 key 为 "lambda" 的 value 值进行提取,并且将这些 value 值放入新的 List 中,可以使用如下代码实现:
```java
List<Map<String, Object>> originalList = ... // 原始 List
List<Object> lambdaValues = originalList.stream()
.map(map -> map.get("lambda"))
.filter(Objects::nonNull)
.collect(Collectors.toList());
```
这里使用了 Java 8 中的 Stream API,首先通过 stream() 方法将原始 List 转换为一个 Stream,然后使用 map() 方法将每一个 Map 对象中 key 为 "lambda" 的 value 值提取出来,再通过 filter() 方法过滤掉 null 值,最后使用 collect() 方法将所有非 null 的 lambda 值收集到一个新的 List 中。最终得到的 lambdaValues 就是所有 Map 对象中 key 为 "lambda" 的 value 值组成的 List。
相关问题
lamda 对 List<Map<String, Object>> 取值并创建新的list
假设你要取出 List<Map<String, Object>> 中所有 Map 对象中 key 为 "lambda" 的 value 值,并且将这些 value 值放入新的 List 中,可以使用如下代码实现:
```java
List<Map<String, Object>> originalList = ... // 原始 List
List<Object> lambdaValues = new ArrayList<>(); // 存放 lambda 值的 List
for (Map<String, Object> map : originalList) {
Object lambdaValue = map.get("lambda"); // 获取 map 中 key 为 "lambda" 的 value 值
if (lambdaValue != null) {
lambdaValues.add(lambdaValue); // 将 lambda 值添加到新的 List 中
}
}
```
这里使用了 for 循环遍历原始 List 中的每一个 Map 对象,然后通过 Map 的 get 方法获取 key 为 "lambda" 的 value 值,如果该值不为 null,则将其添加到新的 List 中。最终得到的 lambdaValues 就是所有 Map 对象中 key 为 "lambda" 的 value 值组成的 List。
java Map<String,List<String>> 根据list的值排序,lamda表达式
在Java中,你可以使用`Map`的`entrySet()`方法来获取所有的键值对,然后使用`Stream`和`Lambda表达式`对这些键值对进行排序。这里有一个例子,它根据`List<String>`中的字符串长度对Map进行排序:
```java
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
Map<String, List<String>> map = new HashMap<>();
map.put("One", Arrays.asList("One", "Two", "Three"));
map.put("Two", Arrays.asList("Four", "Five"));
map.put("Three", Arrays.asList("Six"));
// 使用Lambda表达式和Stream排序
Map<String, List<String>> sortedMap =
map.entrySet().stream()
.sorted(Map.Entry.<String, List<String>>comparingByValue())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldValue, newValue) -> oldValue, LinkedHashMap::new)); // 使用LinkedHashMap保持插入顺序
sortedMap.forEach((key, value) -> System.out.println(key + ": " + value));
}
}
```
在这个例子中,我们首先创建了一个`Map`,其中键是字符串,值是另一个字符串列表。然后我们使用`stream()`方法来获取一个流,再使用`sorted()`方法对流中的键值对进行排序。排序的依据是列表中的字符串长度。最后,我们使用`collect()`方法将流中的元素收集到一个新的`Map`中。这个新的`Map`就是排序后的结果。
注意,这个例子使用了Java 8的特性,包括Lambda表达式和Stream API。如果你的环境不支持这些特性,你可能需要使用不同的方法来对Map进行排序。
阅读全文