将HashMap.toString()转换回Java中的HashMap
我将键值对放入Java中,HashMap
并String
使用toString()
方法将其转换为。
是否可以将这种String
表示形式转换回HashMap
对象并使用其对应的键检索值?
谢谢
回答:
toString()
这种方法依赖于的实现,toString()
并且在大多数情况下可能是有损的。
这里不可能有无损解决方案。但更好的方法是使用对象序列化
将对象序列化为字符串
private static String serialize(Serializable o) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(o);
oos.close();
return Base64.getEncoder().encodeToString(baos.toByteArray());
}
将字符串反序列化为对象
private static Object deserialize(String s) throws IOException, ClassNotFoundException {
byte[] data = Base64.getDecoder().decode(s);
ObjectInputStream ois = new ObjectInputStream(
new ByteArrayInputStream(data));
Object o = ois.readObject();
ois.close();
return o;
}
在此,如果用户对象具有临时字段,则它们将在过程中丢失。
旧答案
一旦使用toString()将HashMap转换为String;不是您可以将其从该String转换回Hashmap,而只是将其转换为String表示形式。
您可以将对HashMap的引用传递给method,也可以对其进行序列化
这是toString()的描述toString()
这是带有序列化说明的示例代码。
并将hashMap作为arg传递给方法。
public void sayHello(Map m){}
//calling block
Map hm = new HashMap();
sayHello(hm);
以上是 将HashMap.toString()转换回Java中的HashMap 的全部内容, 来源链接: utcz.com/qa/432217.html