将哈希表转换为字节数组

时间:2015-08-03 07:17:47

标签: java hashtable

我有一个哈希表,我想通过Datagram Socket发送它。 所以要做到这一点,我需要一个字节数组。 如何将哈希表转换为字节数组? 我忽略了填充哈希表 我试过这样做:

    Hashtable<String, String> valueNick = new Hashtable<>();
    nickStr = valueNick.toString();
    byte[] bufferNick = nickStr.getBytes();
    for (int i = 0; i < bufferNick.length; i++) {
             System.out.print(bufferNick[i] + " ");
        }

但没有印刷任何东西。                 非常感谢您的帮助或建议。

2 个答案:

答案 0 :(得分:2)

考虑为此目的检出ObjectOutputStreamObjectInputStream

查看此tutorial以获取示例和说明

以下是序列化表的示例:

ByteArrayOutputStream byteStream = new ByteArrayOutputStream(5000);
ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(byteStream));

// writes the object into a bytestream
oos.writeObject(valueNick);
oos.close();

byte[] sendBuf = byteStream.toByteArray();
// now send the sendBuf via a Datagram Socket

以下是阅读对象的示例:

ByteArrayInputStream byteStream = new ByteArrayInputStream(recvBuf);
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(byteStream));
Hashtable<String, String> msg = (Hashtable<String, String>) ois.readObject();
ois.close();

答案 1 :(得分:0)

我修改了代码(在其中添加了值)

Hashtable<String, String> valueNick = new Hashtable<>();    
    valueNick.put("name", "Ankush");
    valueNick.put("lastName", "Soni");
        String nickStr = valueNick.toString();
        byte[] bufferNick = nickStr.getBytes();
        for (int i = 0; i < bufferNick.length; i++) {
                 System.out.print(bufferNick[i] + " ");
            }   }

打印输出:

  

123 108 97 115 116 78 97 109 101 61 83 111 110 105 44 32 110 97 109   101 61 65 110 107 117 115 104 125

编辑:使用空的Hashtable我也可以打印

的字节数据
  

123 125