从Map返回一个值

时间:2013-12-06 12:46:16

标签: java syntax

我有Java中的地图

Map<String, List<String>> Collections;

String - ExpandtableList的父级

列出一个孩子到可扩展名单

Example Values 
 <"12" , "5,6,7,8">
 <"15" , "4,6,2,8">
 <"17" , "1,6,7,8">
 <"8" , "5,6,6,8">

我想获得临时String变量的第二个父元素和属性。(它是一个“17”)我如何引用第二个父元素并返回值?

4 个答案:

答案 0 :(得分:0)

HashMap中没有排序。如果您想专注于Map订单,则应使用LinkedHashMap

答案 1 :(得分:0)

使用LinkedHashMap代替HashSet。 LinkedHashMap将维护广告订单。

答案 2 :(得分:0)

如果您想在Map中保留订单,通常会选择LinkedHashMap。但是,使用链接的哈希映射,您仍然无法通过索引直接访问条目。您需要编写辅助函数:

static List<String> indexList(LinkedHashMap<String, List<String>> map, int index) {
  int i = 0;
  for(Map.Entry<String, List<String>> entry : map.entrySet()) {
    if(i++ == index) {
      return entry.getValue();
    }
  }
  throw new IndexOutOfBoundException();
}

使用指向列表的地图时,您可能也有兴趣使用Guava的Multimap

答案 3 :(得分:0)

好吧,如果你想要“17”那么你可以写map.get(“17”)来获得List。

Java不会在这里跟踪订单,因为它使用Set来存储数据。 map.keySet()将返回一个可以迭代的集合。

你可以希望17属于Java所做的自然顺序,并做这样的事情。

 HashMap<String, List<String>> map = new HashMap<>();
 int count = 0;
 for (String key : map.keySet()) {
   count++;
   if (count == 2)
     return map.get(key);
 }