将HashMap.toString()转换回Java中的HashMap

我将键值对放入Java中,HashMapString使用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

回到顶部