-1

インタビューで、ハッシュマップがnullをキーとして保存できるかどうかを尋ねられましたが、ハッシュマップにnullをキーとして保存できるので、「はい」と答えました。さらに、HasMapがキーとしての文字列で構成されて作成され、その関連付けられた値がそこで、彼はどのような場合でもnullをキーとして格納することを望まないので、それを実現するためにどのような事前チェックを行う必要があるかをアドバイスしてください。以下はHashMapです。

Map map = new HashMap();
map.put("ty" ,"Spring");
map.put(null, "nullkey");
map.put("Anupam", "Hibernate");
map.put("Ravi", ".Net");

上に示したように、nullキーは上記のマップにありますが、必要ありません。HashMapでnpキーがNullとして存在するようにするには、事前チェックを行う必要があります。お知らせ下さい。

4

2 に答える 2

1

HashMap実際、null キーを許可します。

他のMap実装では、null キーを追加しようとすると NullPointerException がスローされますHashtableConcurrentHashMap

null キーを禁止したい場合は、これらの実装のいずれかを使用するか HashMap の独自のサブクラスを使用できます。

このようなもの:

public class MyHashMap extends HashMap<K,V> {
   @Override
   public V put(K key, V value) {
     if (key == null) { 
       throw new NullPointerException(); 
     }
     return super.put(key, value);
   }
 }
于 2013-02-20T18:35:09.423 に答える
0

ハッシュマップを反復して値を探します。

Iterator it = map.entrySet().iterator();

while (it.hasNext()) {
        Map.Entry dataPair = (Map.Entry)it.next();
        System.out.println(dataPair.getKey() + " : " + dataPair.getValue());
}

次に、マップのキーを使用して削除または操作を行いたい場合は、while ブロック内で次のようにします。

if (dataPair.getKey() == null) { //Todo: Do something here}
于 2013-02-20T18:36:54.693 に答える