как представить список адресатов в байтбуфере - PullRequest
0 голосов
/ 23 ноября 2011

Простой вопрос:

У меня есть список адресатов, например, A, B, C, D, E, ... и мне нужно поместить этот список описаний в байтовый буфер и отправить клиенту с помощью сокета Java. На стороне клиента он проанализирует байтовый буфер и получит список адресатов.

Я нахожу два способа сделать это: во-первых, используя формат dest_list_size + dest_list. Тогда приведенный выше пример станет: 5 + A; B; C; D; E; во-вторых, используя хэш-набор для хранения списка адресатов. Тогда как преобразовать hashset в байтовые массивы и преобразовать в hashset?

Я хочу проверить, по какому пути лучше идти? Спасибо.

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Лучший способ - сериализовать его в нечто более стандартное, например, в json. Вы можете использовать существующие библиотеки, т.е. Джексон .

0 голосов
/ 23 ноября 2011

В зависимости от типа вашего поля назначения.

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 возможных, вам нужно изменить, как вы пишете это поле / значение, как требуется.

...