2016-11-12 194 views
1

我有以下的HashMap:通过一个ArrayList一个HashMap迭代

HashMap<Integer, ArrayList<Integer>> mat = new HashMap<Integer, ArrayList<Integer>>(); 

,看起来像这样:

1: [2, 3] 
2: [1, 4, 5] 
3: [1, 6, 7] 

我的问题是:

  1. 如何获得ArrayList在我的HashMap的第i个条目中的大小?

  2. 如何在给定的键上访问我的ArrayList中的第i个元素?

+2

'(ArrayList)mat.get(i).size()'会给你列表的大小。 –

+0

地图中的第i个条目是否带有“i”键?基于1的索引? ---列表中的第i个元素是基于1还是基于0的? – Andreas

回答

3

我如何获得该ArrayList的大小在我的HashMap的第i个项目?

我假定你的意思是关键是i的条目。 (由于HashMap的元素是没有顺序的,这是没有意义的谈论HashMap的第i个项目。)

ArrayList<Integer> tmp = mat.get(i); 
    if (tmp != null) { 
     System.out.println("The size is " + tmp.size()); 
    } 

我如何访问第i个元素在我的ArrayList上一个给定的密钥?

我假设你想正常(用于Java)的阵列

ArrayList<Integer> tmp = mat.get(key); 
    if (tmp != null && i >= 0 && i < tmp.size()) { 
     System.out.println("The element is " + tmp.get(i)); 
    } 

注意,有各种边缘的情况下需要用,如果你想进行处理的从零开始的索引来避免例外。 (我已经处理了他们......)

+0

'我<< tmp.size()'?那里你的''钥匙有点粘? ---另外,如果OP将地图索引(aka键)的第i个视为1-3,那么OP可能也会考虑第i个是基于1的列表,而不是像Java那样的基于0的列表。你需要'get(i - 1)'和范围检查的相应变化。 – Andreas

+0

Ooops ....是的。固定 –

0

的Hashmap可以包含空值,所以你需要使用size()arraylistget(i)之前做null检查。

1)如何在我的HashMap的第i个条目中获取ArrayList的大小?

ArrayList<Integer> list = mat.get(i); 
if(list != null) { 
    list.size(); //gives the size of the list 
} 

2)如何访问第i个元素在我的ArrayList在给定的钥匙吗?

ArrayList<Integer> list = mat.get(i); 
    if(list != null) { 
     list.get(i);//gives the i-th element from list 
    } 

你可以参考herehere

1

我如何获得该ArrayList的大小在我的HashMap的第i个项目?


如果是不是你的HashMap的key,恐怕我们不能直接得到的HashMap的i-th entry