一个简单的问题:
我有一个目的地列表,例如A,B,C,D,E,......我需要将这个destiantion列表放到bytebuffer并使用java套接字发送到客户端。在客户端,它将解析bytebuffer并获取目标列表。
我找到两种方法:首先,使用dest_list_size + dest_list的格式。然后上面的例子将成为:5 + A; B; C; D; E;其次,使用哈希集来保存目标列表。那么如何将hashset转换为字节数组并转换为hashset?
我想验证哪种方式更好?感谢。
答案 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个目的地,则需要根据需要更改该字段/值的编写方式。