Contents

将Map转换为数组,列表或集合

1. 概述

这篇简短的文章将展示如何使用纯 Java 以及基于Guava 的快速示例Map的值转换为ArrayListSet

2. 将Map转换为数组

首先,让我们看一下使用普通 java将 Map 的值转换为数组:

@Test
public void givenUsingCoreJava_whenMapValuesConvertedToArray_thenCorrect() {
    Map<Integer, String> sourceMap = createMap();
    Collection<String> values = sourceMap.values();
    String[] targetArray = values.toArray(new String[0]);
}

请注意,*toArray(new T[0])是在toArray(new T[size])*上使用该方法的首选方式。正如 Aleksey Shipilëv 在他的博客文章 中所证明的那样,它似乎更快、更安全、更清洁。

3. 将Map转换为列表

接下来,让我们使用纯 Java 将 Map 的值转换为 List:

@Test
public void givenUsingCoreJava_whenMapValuesConvertedToList_thenCorrect() {
    Map<Integer, String> sourceMap = createMap();
    List<String> targetList = new ArrayList<>(sourceMap.values());
}

并使用Guava:

@Test
public void givenUsingGuava_whenMapValuesConvertedToList_thenCorrect() {
    Map<Integer, String> sourceMap = createMap();
    List<String> targetList = Lists.newArrayList(sourceMap.values());
}

4. 将 Map 转换为 Set

最后,让我们使用纯 java 将 Map 的值转换为 Set:

@Test
public void givenUsingCoreJava_whenMapValuesConvertedToS_thenCorrect() {
    Map<Integer, String> sourceMap = createMap();
    Set<String> targetSet = new HashSet<>(sourceMap.values());
}