猿问

有没有一种方法可以将Array转换为Map?

我有一个要转换为Map的数组,这样数组中的第一个元素是键,第二个元素是值,依此类推。


我正在尝试以下内容:


Arrays.asList("Tamilnadu", "chennai", "Karnataka", "Bengluru")

                .stream()

                .collect(HashMap::new,

                        (a, b) -> a.put(b, ""),//value should be next element in array

                        (a, b) -> a.putAll(b)

                );

我的困惑是如何在同一collection迭代中获取下一个元素,以便我可以做a.put(b,nextElementToB)。


有人可以通过使用流来帮助解决此问题,因为我想尝试相同的功能编程吗?迭代将是这样做的唯一方法吗?


郎朗坤
浏览 378回答 3
3回答

慕的地10843

您可以使用的一个IntStream索引List:Map<String,String> map =&nbsp;&nbsp; &nbsp; IntStream.range(0,list.size()/2)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.boxed()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.collect(Collectors.toMap(i->list.get(2*i),i->list.get(2*i+1)));假设List元素的数量为偶数。

九州编程

您可以使用toMap方法公共静态Map toMap(Object [] array)将给定的数组转换为Map。数组的每个元素必须是Map.Entry或Array,至少包含两个元素,其中第一个元素用作键,第二个元素用作值。此方法可用于初始化://创建一个Map映射颜色。映射colorMap = ArrayUtils.toMap(new String [] [] {{“ RED”,“#FF0000”},{“ GREEN”,“#00FF00”},{“ BLUE”,“#0000FF”}}));&nbsp;对于空输入数组,此方法返回null。参数:array-一个数组,其元素为Map.Entry或包含至少两个元素的Array,可以为null返回:从数组创建的Map抛出:IllegalArgumentException-如果此Array的一个元素本身就是一个包含少于两个元素的Array IllegalArgumentException-如果该数组包含除Map.Entry和Array之外的其他元素因此,您可以按以下方式使用它Map&nbsp;map&nbsp;=&nbsp;ArrayUtils.toMap(arrayName);而且您必须首先从以下位置导入ArrayUtils:import&nbsp;org.apache.commons.lang3.ArrayUtils;注意:这不是内置方法。您需要Apache Commons依赖项!

哈士奇WWW

流一次只看一项,它们彼此独立。这是为了允许并行流可以保留或不保留顺序。Java Streams不适合您要在此处执行的任务。首先将数据按摩到单个原子对象中。在这种情况下,可以通过索引或使用迭代器进行普通的for循环。
随时随地看视频慕课网APP

相关分类

Java
我要回答