2016-11-12 72 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