web-dev-qa-db-ja.com

HashMapをLinkedHashMapに変換/キャストする方法は?

アプリケーションでSharedPreferencesの代わりに Hawk を使用しています。

LinkedHashMapを格納しようとしていますが、何らかの理由でHawkからプルバックすると、通常どおり返されます。 HashMapではなくLinkedHashMap。この時点で、ClassCastExceptionHashMapに直接キャストできないため、LinkedHashMapでクラッシュします。

したがって、問題は、返されたHashMapLinkedHashMapに変換するにはどうすればよいかということです。

6
Emil Adz
15
David Wasser

新しいLinkedHashMapを作成するだけです。これは、コンストラクター引数として任意のMapを使用できるためです。

LinkedHashMap<Object> newMap = new LinkedHashMap<>(theHashMapReturnedFromHawk);

Objectが必要なタイプになります。

7
Nick

LinkedHashMap のコンストラクターの1つは、Mapを受け入れます。 LinkedHashMapと同じ内容のHashMapを返します。

コードサンプル:

LinkedHashMap<T> newMap = new LinkedHashMap<T>(hashmap);

ここで、Tは、HashMapに格納されているオブジェクトのタイプです。

2
Pankaj Singhal