我应该在Java中使用哪个数据结构来获得1个密钥的多值

时间:2012-05-11 09:40:34

标签: java android

我有一个RSS Feed,其中我得到日期和新闻描述,我想添加以一种方式安排它,相同的日期包含当天的新闻。例如,

date 1 - my news 1
       - my news 2
       - my news 3

3 个答案:

答案 0 :(得分:5)

在核心Java中,您可以使用列表地图:

Map<String, List<String>> map = new HashMap<String, List<String>>();
List<String> list1 = new ArrayList<String>();

list1.add("my news 1");
list1.add("my news 2");
list1.add("my news 3");

map.put("date 1", list1);

如果你可以使用外部库,那么Guava有一个Multimap概念也是这样做的,works fine on Android

答案 1 :(得分:2)

尝试这样的事情:

HashMap map = new HashMap();  

//first list
List list = new ArrayList();
list.add("orange");  
list.add("apple");  
list.add("banana");  
list.add("coconut");  
map.put("fruits", list);  

//seconds list
list = new ArrayList();
list.add("volvo");  
list.add("saab");  
list.add("honda");  
list.add("toyota");
map.put("cars", list); 

依旧......

//to get from map   
List fruits = (ArrayList)map.get("fruits");   
List cars   = (ArrayList)map.get("cars");  

答案 2 :(得分:2)

从谷歌尝试guava库(你可以用它与android)。这个lib包含许多有用的数据结构,例如multimap(你可以查看带有数组列表后端的多地图)http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ArrayListMultimap.html):

map.put("date 1", "my news 1")
map.put("date 1", "my news 2")
map.put("date 1", "my news 3")
map.put("date 1", "my news 4")

List<String> news = map.get("date 1")