如何使用集合框架在java中实现以下数据结构

时间:2015-05-14 05:51:58

标签: java collections

我的数据结构如下

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`

我很难弄清楚如何做到这一点。我需要你们的支持

6 个答案:

答案 0 :(得分:1)

您需要一些包装对象来存储您的状态&#39;数据。然后你可以有这样的结构:Map<String, List<StateBean>>。这样您就可以处理每个国家/地区的州名单。 如果数据只是字符串使用Map<String, List<String>>

答案 1 :(得分:1)

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

答案 2 :(得分:1)

StationIDs存储在ArrayList对象中,并使用键值对在HashMap中添加这些对象..其中key是针对StationId ArrayList对象的国家/地区

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

答案 3 :(得分:1)

我们可以将地图设为国家/地区,ListOfStates

ListOfStates 可以是包含 StateIds

的列表

或StateIds为Map,其中StateId为关键,城市列为值

答案 4 :(得分:0)

使用can Data Structure map&lt;字符串,矢量&lt;字符串&gt;&gt; ,地图&lt; T类,矢量&lt; U类&gt; &GT;

答案 5 :(得分:0)

您可以为此创建class

class YourClass
{
     String country;
     State state;
}

class State
{
    Set<String> cities;
}

然后,您可以将此class用作数据结构。你真的不需要使用Collections框架。

如果您确实想要使用收藏集进行操作,那么您可以将CountryStateId组合使用key,将城市列表组合为valueMap中。例如:

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