当前位置: 首页 > 面试题库 >

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

黎曾笑
2023-03-14
问题内容

我将键值对放入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);


 类似资料:
  • 我使用的是标准的Python3 lib,特别是函数 binascii.crc_hqx(数据,值) 我尝试了函数的变体 binascii.a2b_hqx(字符串) 将binhex4格式化的ASCII数据转换为二进制数据,而不执行RLE解压缩。字符串应该包含完整数量的二进制字节,或者(如果是binhex4数据的最后一部分)剩余位为零。 此回溯:

  • 问题内容: 我面临与转换为相关的问题。实际上,我将浮点类型存储在数据库中,但是当我们通过下面的代码从数据库中获取数据时,它是类型。我们获得的价值以表格的形式出现。 那么我们如何获得像这样的格式数据呢? 问题答案: 只需将您的双曲投向花车即可。 还要注意,基本类型不能存储无限的数字集:

  • 我需要从<代码>列表转换 我做了: 但是我得到了这个字符串: 只是一个字符串,但我需要字符串[] 多谢了。

  • 问题内容: 我正在尝试保存到,然后在Swift中读回新的内容。要转换到我使用下面的代码: 如何将(即)转换回新的? 问题答案: 假设图像的比例为1。 在Swift 4.2中,将以下代码用于get Data()。

  • 问题内容: 因此,我尝试将Key转换为字符串,以便可以使用System.out显示它,然后将其转换回Key。我可以使用BASE64Encoder将其转换为字符串,但是在将其转换回时遇到问题。这是我的源代码: 问题答案: 您永远不会使用un-base-64您的字符串。 替换为: 与

  • 问题内容: 我看过几本 教程,解释了如何将二进制图像转换为encode64表示形式: 我的问题是,如何将该字符串表示形式返回到缓冲区的二进制数据。 问题答案: 这个问题有一些有用的信息:如何在node.js中进行Base64编码? Buffer类本身进行转换: