2015-05-14 72 views
2

實現以下Java數據結構下面我有這樣的如何使用收集框架

Country,StateID1 where StateID1 contains "City1","City2","City3" etc 
Country,StateID2 where StateID2 contains "City1","City2","City3" etc 

我知道我不能使用HashMap來實現上面的數據結構,因爲如果我添加StateID2到同一個國家StateID1數據結構將與StateID2 被替換爲如

map.put("1","1111"); 
map.put("1","2222"); 
output 

key:value 
1:2222` 

我面臨艱難的時間來搞清楚如何做到這一點。我需要你們的支持

回答

0

您可以爲此創建一個class

class YourClass 
{ 
    String country; 
    State state; 
} 

class State 
{ 
    Set<String> cities; 
} 

然後,您可以使用此class作爲數據結構。你並不需要使用Collections框架。

OR

如果你真的想使用集合來做到這一點,那麼你可以使用的CountryStateId組合爲key,和城市爲value的在Map列表。對於前:

String country = "1"; 
String state = "1"; 
String separator = "-" // You could use any separator 
String key = country + separator + state; 
Set<String> cities = new HashSet<String>(); 
cities.add("1"); 
cities.add("2"); 

Map<String, Set<String>> map = new HashMap<>(); 
map.put(key, cities); 

所以你key1-1和值將是12

1

你需要一些包裝對象來存儲你的'狀態'數據。那麼你可以有這樣的結構:Map<String, List<StateBean>>。這樣你可以處理每個國家的狀態清單。 如果數據只是字符串使用Map<String, List<String>>

1

You can have a Map<String, Set<String>>.

1

商店StationIDsArrayList對象,並在使用HashMap鍵值對添加的對象..其中的關鍵是對的stationID ArrayList對象的國家。

StateID1 = ["City1","City2"] // ArrayList 
StateID2 = ["City1","City2"] 
1

我們可以有地圖爲國家,ListOfStates

ListOfStates可能是包含StateIds

或者StateIds與STATEID一個地圖的關鍵和列表的列表城市作爲價值

0

使用罐數據結構圖<字符串,矢量<字符串>>,地圖< class T,vector < class U>>