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

Mad*_*ota 9 java arrays arraylist hashmap

我有两个String数组.一个人的名字很短.

// days short name
String[] shortNames = {"SUN", "MON", "...", "SAT"};
Run Code Online (Sandbox Code Playgroud)

另一个有很长的名字.

// days long name
String[] longNames = {"SUNDAY", "MONDAY", "....", "SATURDAY"};
Run Code Online (Sandbox Code Playgroud)

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

HashMap<String, String> days = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

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

spr*_*ter 24

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

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

有一些第三方Java库包含一个'zip'函数来获取两个流并生成一个映射到另一个.但实际上它们只是实现与上述代码相同的更简洁的方式.