2012-02-10 9 views
2

Javaでは、MapインターフェイスからputAll()メソッドの実装を完了するためにマップを繰り返し処理しようとしています。しかし、これを行うにはkeyset()entryset()values()を使用できません。つまり、この目的でイテレータを呼び出すことはできません。イテレータまたはセットを使用せずにマップを反復処理するにはどうすればよいですか?

イテレータを使わずにどのように動くかについては、私は困惑しています。

編集:

だけ明確にする、私の仕事は、これら3つを使用せずにマップすべてのメソッドを実装することです。私はイテレータなしでputAll()のようなメソッドを実装する方法については困惑しています。

+2

これらのメソッドを使用できないのはなぜですか? – Mat

+0

には許可されていません。 – so1201431

+0

あなたに教師はいますか? – Mat

答えて

-2
Map mp = new HashMap(); 
     Set s = mp.keySet(); 
     Iterator itr = s.iterator(); 
     while(itr.hasNext()) 
     { 
      Object value = mp.get(itr.next()); 
     } 

なぜあなたはそれを使用できないのかわかりません。実装は上記のコードで行われます。

+1

-1は、質問の明示的な制限に違反します。また、ジェネリックもありません:-( –

0

Mapは、あなたがこれを行うことができ、SortedMapの場合:

SortedMap<K, V> partialMap = wholeMap; 
while (!partialMap.isEmpty()) { 
    K key = partialMap./* left as an exercise to the reader */; 
    partialMap = partialMap.tailMap(
     key, 
     false // exclusive, so does not include key 
    ); 
} 

あなたはjavadoctailMapの説明を見つけることができます。 HashMapのコードから

+0

いいえ、 'Map 'インタフェースでしか動作できません。 – so1201431

0

:あなたはこのようなイテレータを使用できない理由

for (Iterator<? extends Map.Entry<? extends K, ? extends V>> i = m.entrySet().iterator(); i.hasNext();) { 
      Map.Entry<? extends K, ? extends V> e = i.next(); 
      put(e.getKey(), e.getValue()); 
     } 

今、多分あなたは説明する必要があります。

または実装コードを教えてください。そうすれば、KVエントリを保存する方法がわかるようになります。 Mapインターフェイスのメソッドを使用することによってのみ、使用が制限されている3つのメソッド以外の方法はありません

関連する問題