为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

郎朗坤 2021-04-01 16:14:24
我有一个要转换为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)。有人可以通过使用流来帮助解决此问题,因为我想尝试相同的功能编程吗?迭代将是这样做的唯一方法吗?
查看完整描述

3 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

您可以使用的一个IntStream索引List:


Map<String,String> map = 

    IntStream.range(0,list.size()/2)

             .boxed()

             .collect(Collectors.toMap(i->list.get(2*i),i->list.get(2*i+1)));

假设List元素的数量为偶数。


查看完整回答
反对 回复 2021-04-21
?
九州编程

TA贡献1785条经验 获得超4个赞

您可以使用toMap方法

公共静态Map toMap(Object [] array)

将给定的数组转换为Map。数组的每个元素必须是Map.Entry或Array,至少包含两个元素,其中第一个元素用作键,第二个元素用作值。

此方法可用于初始化:

//创建一个Map映射颜色。映射colorMap = ArrayUtils.toMap(new String [] [] {{“ RED”,“#FF0000”},{“ GREEN”,“#00FF00”},{“ BLUE”,“#0000FF”}})); 对于空输入数组,此方法返回null。

参数:array-一个数组,其元素为Map.Entry或包含至少两个元素的Array,可以为null

返回:从数组创建的Map

抛出:IllegalArgumentException-如果此Array的一个元素本身就是一个包含少于两个元素的Array IllegalArgumentException-如果该数组包含除Map.Entry和Array之外的其他元素

因此,您可以按以下方式使用它

Map map = ArrayUtils.toMap(arrayName);

而且您必须首先从以下位置导入ArrayUtils:

import org.apache.commons.lang3.ArrayUtils;

注意:这不是内置方法。您需要Apache Commons依赖项!


查看完整回答
反对 回复 2021-04-21
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

流一次只看一项,它们彼此独立。这是为了允许并行流可以保留或不保留顺序。

Java Streams不适合您要在此处执行的任务。首先将数据按摩到单个原子对象中。在这种情况下,可以通过索引或使用迭代器进行普通的for循环。


查看完整回答
反对 回复 2021-04-21
  • 3 回答
  • 0 关注
  • 377 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信