Java 如何使用另一个列表中地图的属性创建新列表
假设我有一个Java 如何使用另一个列表中地图的属性创建新列表,java,list,dictionary,java-8,java-stream,Java,List,Dictionary,Java 8,Java Stream,假设我有一个列表: 我需要生成另一个列表,包括上面列表中的名称: List<String> 列表 避免使用循环,是否可以通过使用java流api来实现这一点 List<String> names = list.stream() .map(i -> i.get("name").toString()) .collect(Collectors.toList()); 或
列表
:
我需要生成另一个列表,包括上面列表中的名称:
List<String>
列表
避免使用循环,是否可以通过使用java流api来实现这一点
List<String> names = list.stream()
.map(i -> i.get("name").toString())
.collect(Collectors.toList());
或
List name=List.stream()
.map(i->i.get(“名称”))
.filter(对象::非空)
.map(对象::toString)
.collect(Collectors.toList());
i.getOrDefault(i,“other”)怎么样?@HadiJ然后我们必须从结果中筛选出“other”
s,对吗?可能是map(i->i.get(“name”).filter(name->name!=null)。map(name->name.toString())
为了防止包含skey
?我们不知道我们有什么类型的映射。containsKey
可能很贵。你怎么想?另一方面,可能有一个带有键“name”
的etnry,但是OP应该清除相应的值是否为null
(看起来不是这样)。我认为可能不是containsKey
错了,但是使用containsKey
然后立即get
意味着在地图中每个当前键有2次查找,而使用get
然后!=空
。
List<String> names = list.stream()
.map(i -> i.get("name").toString())
.collect(Collectors.toList());
List<String> names = list.stream()
.filter(i -> i.containsKey("name"))
.map(i -> i.get("name").toString())
.collect(Collectors.toList());
List<String> names = list.stream()
.map(i -> i.get("name"))
.filter(Objects::nonNull)
.map(Object::toString)
.collect(Collectors.toList());