如何在bytebuffer中表示目标列表

时间:2011-11-23 15:55:19

标签: java hashset bytebuffer

一个简单的问题:

我有一个目的地列表,例如A,B,C,D,E,......我需要将这个destiantion列表放到bytebuffer并使用java套接字发送到客户端。在客户端,它将解析bytebuffer并获取目标列表。

我找到两种方法:首先,使用dest_list_size + dest_list的格式。然后上面的例子将成为:5 + A; B; C; D; E;其次,使用哈希集来保存目标列表。那么如何将hashset转换为字节数组并转换为hashset?

我想验证哪种方式更好?感谢。

2 个答案:

答案 0 :(得分:1)

最好的方法是将其序列化为更像json这样的标准。您可以使用现有的库,例如jackson

答案 1 :(得分:0)

取决于目的地字段的类型。

ByteBuffer bb = ...
Set<Character> destinations = new LinkedHashSet<Character>(
        Arrays.asList('A',  'B',  'C',  'D',  'E'));
bb.put((byte) destinations.size());
for (char b : destinations) bb.put((byte) b);

bb.flip();

int size = bb.get();
Set<Character> destinations2 = new LinkedHashSet<Character>();
for (int i = 0; i < size; i++)
    destinations2.add((char) bb.get());
System.out.println(destinations2);

打印

[A, B, C, D, E]

如果您有不同类型的目的地或超过127个目的地,则需要根据需要更改该字段/值的编写方式。