Ответ 1
Это действительно зависит от того, как вы планируете декодировать эти байты на другом конце. Одним из разумных способов было бы использовать кодировку UTF-8, такую как DataOutputStream
для каждой строки в списке. Для строки он записывает 2 байта для длины кодировки UTF-8, за которой следуют байты UTF-8. Это было бы портативным, если вы не используете Java на другом конце. Здесь пример кодирования и декодирования ArrayList<String>
таким образом, используя Java для обеих сторон:
// example input list
List<String> list = new ArrayList<String>();
list.add("foo");
list.add("bar");
list.add("baz");
// write to byte array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);
for (String element : list) {
out.writeUTF(element);
}
byte[] bytes = baos.toByteArray();
// read from byte array
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
DataInputStream in = new DataInputStream(bais);
while (in.available() > 0) {
String element = in.readUTF();
System.out.println(element);
}