将Map转换为数组,列表或集合
Contents
1. 概述
这篇简短的文章将展示如何使用纯 Java 以及基于Guava 的快速示例将Map的值转换为Array、List或Set 。
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());
}