用Java將Map轉換為Array,List或Set

1.概述

這篇簡短的文章將展示如何使用純Java以及基於Guava的快速示例Map的值轉換為數組,**列表集合

本文是Baeldung上的“ Java – Back to Basic”系列的一部分。

進一步閱讀:

遍歷Java中的Map

學習遍歷Java中Map條目的不同方法。

閱讀更多→

map()和flatMap()之間的區別

通過分析Streams和Optionals的一些示例,了解map()和flatMap()之間的區別。

閱讀更多→

如何在Java中的地圖中存儲重複鍵?

快速實用的指南,通過在Java中使用多重映射來處理重複鍵。

閱讀更多→

2.將值映射到數組

首先,讓我們看一下使用純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 [size])相比toArray(new T [0])是使用該方法的首選方法。正如AlekseyShipilëv在其博客文章中所證明的那樣,它看起來更快,更安全,更乾淨。

3.將值映射到列表

接下來,讓我們使用純Java將Map的值轉換為List:

@Test

 public void givenUsingCoreJava_whenMapValuesConvertedToList_thenCorrect() {

 Map<Integer, String> sourceMap = createMap();



 List<String> targetList = new ArrayList<>(sourceMap.values());

 }

並使用番石榴:

@Test

 public void givenUsingGuava_whenMapValuesConvertedToList_thenCorrect() {

 Map<Integer, String> sourceMap = createMap();



 List<String> targetList = Lists.newArrayList(sourceMap.values());

 }

4.映射要設置的值

最後,讓我們使用純Java將Map的值轉換為Set:

@Test

 public void givenUsingCoreJava_whenMapValuesConvertedToS_thenCorrect() {

 Map<Integer, String> sourceMap = createMap();



 Set<String> targetSet = new HashSet<>(sourceMap.values());

 }

5.結論

如您所見,僅使用Java標準集合庫,所有轉換都可以在一行中完成。

所有這些示例和代碼段的實現都**可以在GitHub項目找到**–這是一個基於Maven的項目,因此應該很容易直接導入和運行。