ハッシュマップキーの名前を変更する方法を探していますが、Javaで可能かどうかわかりません。ハッシュマップキーの名前を変更することはできますか?
答えて
要素を削除して、新しい名前で再度入力してください。
Object obj = map.remove("oldKey");
map.put("newKey", obj);
+1。読みやすくするためには 'map.put(" newKey "、map.remove(" oldKey "));と' oldKey'を含んでいます –
可読性に関する限り、私は全く反対します。オブジェクトがマップから削除され、追加されます。そして、OPはJavaにとってかなり新しいようなので、私はそれをそのようにすることに決めました。しかし、パフォーマンスのために、あなたのバージョンは当然です(コンパイラが私のバージョンをあなたの方法で最適化するとは思わないので)。 –
javac 1.8.0_45では、1行のバージョンが2バイト短いため驚いています。ジェネリックでもっと厄介なことに、 'obj'をキャストしたり、別の型として宣言したりすることはできませんが、もちろん' remove'の結果を直接渡すことはできます。 –
ハッシュマップキーの名前を変更しない場合は、新しいキーで新しいエントリを挿入し、古いキーを削除する必要があります。
が新しいキーに、名前を変更する必要があるキーの値を割り当てます。マップ内のキーがString
ていると仮定すると、それはそのように達成することができました。古いキーを削除します。
hashMap.put("New_Key", hashMap.get("Old_Key"));
hashMap.remove("Old_Key");
あなたはキーを一度に加えハッシュマップを修正/変更することはできません。
キーを削除/削除し、新しいキーと値のペアを挿入する方法があります。
理由:HashMapの内部実装ではHashMapのキーモディファイを最終としてマーク。参考のために
static class Entry<K ,V> implements Map.Entry<K ,V>
{
final K key;
V value;
Entry<K ,V> next;
final int hash;
...//More code goes here
}
hashMap.put("New_Key", hashMap.remove("Old_Key"));
これは、あなたがやりたいだろうけど、あなたはキーの場所が変更されていることがわかります。
@Vinsは文書を再訪してください:D、remove()このオブジェクトをチェックしてください。https://www.tutorialspoint.com/java/util/hashmap_remove.htm –
私の悪い、私は私のコメントを削除し、それに投票しました。申し訳ありません。 – Vins
- 1. 名前の変更():ラッパタイプ間でファイルの名前を変更することはできません
- 2. gitでブランチの名前を変更することはできますか?
- 3. Firebirdでテーブルの名前を変更することはできますか?
- 4. LiquibaseのDATABASECHANGELOGLOCKテーブルの名前を変更することはできますか?
- 5. Gemfileの名前をGemfile.rbに変更することはできますか?
- 6. maven jar-with-dependenciesの名前を変更することはできますか?
- 7. AWSラムダ関数の名前を変更することはできますか?
- 8. ngx-datatable-columnの名前を変更することはできますか?
- 9. 足場の名前空間を変更することはできますか?
- 10. GitHub SSHキーの名前を変更することはできますか?
- 11. メインアクティビティの名前を変更することはできますか?
- 12. PyCharmProjectsの場所/名前を変更することはできますか?
- 13. Sharepointワークフローの名前を変更することはできますか?
- 14. AWS CloudWatchロググループの名前を変更することはできますか?
- 15. 列の名前を変更することはできますか?
- 16. アップロードする前にiOSアプリの名前を変更することはできますか?
- 17. サーバにアップロードする前にファイルの名前を変更することはできますか?
- 18. ビューやテーブルの名前を変更して、すべてのサーバサイドオブジェクトで名前を変更することはできますか?
- 19. AndroidダウンロードZip(サーバー上の名前を変更することができます)
- 20. @ nrwl/nxの名前空間名を変更することはできますか?
- 21. 宣言段階で変数の名前を変更することはできますか?
- 22. Linux上で名前付きパイプのサイズを変更することはできますか?
- 23. 更新後にFirebaseデータベースのURL /名前を変更することはできますか?
- 24. ハッシュマップキーは不変であるべきですか?
- 25. JavaScriptでオブジェクト型の名前を変更することはできますか?たとえば
- 26. PHPで名前空間の名前を変更できますか?
- 27. いくつかのCSSクラスの名前を変更/変更することができないようです。
- 28. nginxでクッキーの名前を変更することはできますか? apacheのウェブプロキシサーバで
- 29. JMXFetchをDataDogにプッシュする前にJMXFetchのJMX属性名を変更することはできますか?
- 30. Googleアナリティクスのイベントラベルの名前を変更することは可能ですか?
まあ、私は願っていません。キーと値のペアを削除して再入力することは、方法のように思えます。とにかく地図自体の参照を通常処理するだけであることに注意してください。 –
ハッシュエントリのキーを変更しないでください!あなたが運が良ければ、同じハッシュコードで何かに変更し、何が起こったか把握しようとすると少し狂ってしまうでしょう。あなたが不運な場合、あなたは見つからないエントリで終わるでしょう(まあ、テーブル全体の次の再構築までです)。 Remove/reinsertははるかに安心していて、かなり安価であるはずです(結局のところ、すべて参考になります)。 –