我必须转换一个列表List
map的键必须是列表中的字符串,并且所有键的每个值都必须为
0
(零)。
如何转换此值?
我尝试过:
List<String> list = List.of("banana", "apple", "tree", "car");
Map<String, Float> map = list.stream()
.distinct()
.collect(Collectors.toMap(String::toString, 0f));
另一种方法是在不使用流的情况下执行相同的操作。
Map<String,Float> map = new HashMap<String, Float>();
list.forEach(s-> map.computeIfAbsent(s,v->0f));
如果需要将每个键与0相关联,则toMap()的第二个参数需要是返回0的函数,而不是返回0的值:
Map<String, Float> map = list.stream()
.collect(Collectors.toMap(
Function.identity(), // extracting a key
str -> 0f, // extracting a value
(left, right) -> 0f // resolving duplicates
));
此外,无需使用distinct()。在后台,它将创建一个LinkedHashSet来消除重复,如果大多数流元素都是唯一的,并且数据集是海量的,那么它可能会显著增加内存消耗。
相反,我们可以在映射中处理它们。为此,我们需要添加第三个参数mergeFunction
。
对于已经是字符串的流元素,无需调用toString()方法来提取字符串类型的键。在这种情况下,我们可以使用函数。identity()
表示不需要转换。
问题内容: 如何使用Python将列表转换为字符串? 问题答案: 通过使用 或者,如果列表是整数,则在连接元素之前将其转换。
问题内容: 我想获取一串字符串并将其转换为单词对流。例如: 我有: 我想要:。 这几乎与Zipping相同,如使用带有Lambda的JDK8的Zipping流中概述的那样(java.util.stream.Streams.zip) 但是,这会产生: 以下代码有效,但显然是错误的方法(不是线程安全的等): 问题答案: 如果你: 不喜欢使用流中所有字符串创建列表的想法 不想使用外部库 喜欢弄脏你的手
更正:正如你们所指出的,我使用的是Java7。现在,方法就在那里。但问题仍然适用: 如何从字符串中获取?
很抱歉重复了这个问题,但我的问题是其他的。我有一个从json-string解析到map的JSON解析器方法。但是json-string有一个值,这个值也是json-string。大概是这样的: 因此,我的解析方法: 我在客户端得到响应: ?但是随后我得到一个错误,IDE告诉我,是一个字符串。 那么,我如何用我的UserData获得这个LinkedHashMap呢?对不起,为了我的英语。谢谢你。
我有字符串列表 我需要将该列表转换为字符串,如下所示: 我想获取的字符串是: 如果 那么我只需要 如果,那么我需要。 有没有可能以一种灵活的方式做到那一点,并且避免编写多个? UPD:我在
这个问题的范围是JSON处理的JavaAPI(JSR 353)。 给定一个元素为JsonString的JsonArray,我如何轻松地将其转换为