java - Java中如何将两个数组映射到一个HashMap?

标签 java arrays arraylist hashmap

我有两个字符串数组。一个有简称。

// days short name
String[] shortNames = {"SUN", "MON", "...", "SAT"};

另一个名字很长。

// days long name
String[] longNames = {"SUNDAY", "MONDAY", "....", "SATURDAY"};

两者具有相同数量的元素。如何在 HashMap 中将短名称映射为 KEY,将长名称映射为 VALUE?

HashMap<String, String> days = new HashMap<>();

我知道,我可以通过循环来制作。有没有更好的办法?

最佳答案

有很多方法可以做到这一点。一个相当容易理解和应用的方法是使用 Java 8 流和收集器将索引流映射到键值对:

Map<String, String> days = IntStream.range(0, shortNames.length).boxed()
    .collect(Collectors.toMap(i -> shortNames[i], i -> longNames[i]));

有一些第三方 Java 库包含一个“zip”函数,可以获取两个流并生成一个到另一个的映射。但实际上,它们只是实现与上述代码相同的目的的更简洁的方法。

关于java - Java中如何将两个数组映射到一个HashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30339679/

相关文章:

java - 如何将属性文件项映射到 Spring Application Context xml 中的 Map 对象?

Java - 从 JSONObject 中检索变量类型的值

java - 如何使textview的一部分可编辑

java - 单击 JButton 时如何在 JWIndow 上显示图像?

java - 无法在 JSP 中显示 arrayList

java - 循环不捕获重复项并在 Android(Java) 中删除它们

javascript - 这个判断在Array.prototype.filter中是否必不可少

arrays - Ruby - 存储在数组中并返回所有值

java - 使用 List.toArray 时数组变为 null

java - 指向新引用的 ArrayList 会调用 GC