2011-05-19 62 views
0
LinkedHashMap<String,ArrayList<String>> h; 

它包含:當我將它們轉換爲Set時,LinkedHashMap元素會發生什麼?

key 1 : value A, B, C, D 
2 : E,F 
3 : G 

我不太明白Set接口。也許有一點可視化會有所幫助。請幫助我想象一下,如果將LinkedHashMap中的所有元素轉換爲Set,它們將如何呈現?

Set set = h.entrySet(); 

對不起,也許我的問題有點模糊。隨着線程的發展,我會盡力磨礪它。

回答

1

Map的輸入集是集合中的條目集

地圖中的條目是從鍵到值的映射。在您的情況下,地圖類型爲...<String, ArrayList<String>>,單個條目是一對String(關鍵字)和ArrayList<String>(值)。

下面的代碼片斷可以闡明一些在此:

LinkedHashMap<String, List<String>> map = 
     new LinkedHashMap<String, List<String>>(); 

map.put("1", Arrays.asList("A", "B", "C")); 
map.put("2", Arrays.asList("E", "F")); 
map.put("3", Arrays.asList("G")); 

System.out.println(map.entrySet()); 
System.out.println(map.entrySet().getClass()); 

輸出:

[1=[A, B, C], 2=[E, F], 3=[G]]  # All entries (key/value pairs) 
class java.util.HashMap$EntrySet # This particular entry set class. 

在這種情況下,例如,該條目組實際上是一個內部類的HashMap,命名EntrySet

+0

我想我不明白接口和類之間的區別...什麼類型的實現Set接口? – Prostak 2011-05-19 17:51:28

+0

@Prostak,任何聲明爲「SomeClass類實現Set」的類(或任何擴展實現Set的類的類)。 – aioobe 2011-05-19 17:52:23

1

entrySet()只是地圖中的條目(鍵值對)。這將有助於您查看entrySet()返回的類型,在您的示例中爲Set<Map.Entry<String, ArrayList<String>>>。查看Map.Entry javadoc。

另請注意,地圖不是轉換爲的一個條目集 - 而是,條目集是地圖中條目的視圖。

至於什麼Set是:這是一組是獨特的根據獨特的一些定義元素的(對大多數Set小號equals/hashCodeComparable/ComparatorSortedSet S)。由於Map最多隻能有一個值映射到單個鍵,因此每個鍵值條目都保證是唯一的。

相關問題