我正在使用Hawk替换我的应用程序中的SharedPreferences
。
我尝试将一个LinkedHashMap
存储在其中,但是当我从Hawk中获取它时,它会返回一个普通的HashMap
而不是LinkedHashMap
。此时我会遇到一个ClassCastException
异常,因为HashMap
不能直接转换为LinkedHashMap
。
那么问题来了,如何将返回的HashMap
转换为LinkedHashMap
呢?
我正在使用Hawk替换我的应用程序中的SharedPreferences
。
我尝试将一个LinkedHashMap
存储在其中,但是当我从Hawk中获取它时,它会返回一个普通的HashMap
而不是LinkedHashMap
。此时我会遇到一个ClassCastException
异常,因为HashMap
不能直接转换为LinkedHashMap
。
那么问题来了,如何将返回的HashMap
转换为LinkedHashMap
呢?
只需创建一个新的LinkedHashMap,因为它可以将任何Map作为构造函数参数。
LinkedHashMap<Object> newMap = new LinkedHashMap<>(theHashMapReturnedFromHawk);
Object
是你需要的类型。
LinkedHashMap的其中一个构造函数接受一个Map
。它将返回一个与HashMap
内容相同的LinkedHashMap
。
代码示例:
LinkedHashMap<T> newMap = new LinkedHashMap<T>(hashmap);
其中T
是存储在HashMap
中的对象的类型