2016-12-08 7 views
-1

ハッシュマップから特定のキーを削除し、それに従ってハッシュマップにキーを再配置する方法を教えてください。リサイクラビューでキーを削除して再配列する場合

以下は私のコードです。私はあなたが直接あなたが直接ハッシュマップ内のキーを配置する再」のよう

hashMap.remove(removeKey); 

を行うことができ、キーと値のペアを削除することができ、エラーのスクリーンショット

enter image description here

+0

再配置することは何を意味しますか?あなたは何をしようとしているのか説明できますか? –

+0

ハッシュマップに7つ以上の項目を追加し、ハッシュマップから4番目の項目を削除しようとすると、エラー "ArrayIndexOutOfBoundsException"が表示されます –

+0

質問に例外を追加できますか? –

答えて

0

を添付した

Set<Integer> integerSet = hashMap.keySet(); 
       int removekey = pos; 
       ArrayList<Integer> integers = new ArrayList<>(); 
       for (Integer integer : integerSet) { 
        if (integer > removekey) { 
         integers.add(integer); 
        } 
       } 

       for (Integer integer : integers) { 
        if (hashMap.containsKey(integer)) { 
         AddCardPojo pojo = hashMap.get(integer); 
         pojo.setImagCard(cardImage[integer - 1]); 
         hashMap.remove(integer); 
         hashMap.put(integer - 1, pojo); 
        } 
       }[![enter image description here][1]][1] 

'、 データの順序を保証しないデータ構造です。 Check this answer for more

あなたは整数ごとに特定の順序が必要な場合は、最後にそれを行うことができるのArrayList

0

を使用することができます。 以下は私の答えです。

   hashMap.remove(key); 

       List<AddCardPojo> hashMapsList=new ArrayList<>(); 

       Iterator it = hashMap.entrySet().iterator(); 
       while (it.hasNext()) { 

        Map.Entry pair = (Map.Entry)it.next(); 
        hashMapsList.add((AddCardPojo) pair.getValue()); 
       } 

       hashMap = new HashMap<>(); 
       for(int i=0; i<hashMapsList.size();i++){ 
        hashMap.put(i,hashMapsList.get(i)); 
       } 
関連する問題