2016-11-12 16 views
1

でのArrayListを反復:私は、次のHashMap持っているのHashMap

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

次のようになります。

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

を私の質問は以下のとおりです。

  1. 私はどのように入手できますか私のHashMapのi番目の項目のArrayListのサイズ?

  2. 指定されたキーのArrayListのi番目の要素にアクセスするにはどうすればよいですか?私は私のHashMapのi番目のエントリでのArrayListのサイズを取得するにはどうすればよい

+2

'(ArrayList)mat.get(i).size()'はあなたにリストのサイズを与えます。 –

+0

マップのi番目のエントリにキー「i」がありますか? 1ベースのインデックス? ---リストのi番目の要素は1ベースまたは0ベースですか? – Andreas

答えて

3

キーがiのエントリを意味するものとします。 (HashMapの要素が順序付けされていないので、HashMapのi番目のエントリについて話をする意味がありません。)

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

私は私のArrayListにi番目の要素にアクセスするにはどうすればよいです与えられた鍵?

私はあなたが正常な場合を想定し、配列したい場合に対処する必要があり、様々なエッジ-例があることを

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

ノートのゼロベースのインデックス(Java用)へ例外を避ける。

+0

'i << tmp.size()'?あなたの '<'キーはちょっと粘っていましたか? ---また、OPがi-thをマップインデックス(別名キー)の1〜3と見なした場合、OPはJavaのように0ベースではなくi-thをリストに基づいて1ベースと考えます'get(i-1)'とそれに対応する範囲チェックの変更が必要です。 – Andreas

+0

Ooops ....そうだった。一定 –

0

HashMapのは、NULL値を含めることができますので、あなたはarraylistsize()get(i)を使用する前にnullチェックを行う必要があります(私は...それらを扱っています)。

1)HashMapのi番目のエントリにArrayListのサイズを取得するにはどうすればよいですか?

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

2)どのように私は与えられたキーの私のArrayListのi番目の要素にアクセスできますか?

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

あなたは私のHashMapのi番目のエントリでのArrayListのサイズを取得するにはどうすればよいherehere

1

を参照することができますか?


は私があなたのHashMapのkeyではない場合、私たちは直接のHashMapのi-th entryを取得傾けることを恐れています。

関連する問題