Каков наиболее эффективный способ сделать это?Создание байта [] из списка <Byte>
ответ
byte[] byteArray = new byte[byteList.size()];
for (int index = 0; index < byteList.size(); index++) {
byteArray[index] = byteList.get(index);
}
Вы не можете, как это, но это почти единственный способ создания Genuine ™ Array® из byte
.
Как указано в комментариях, существуют и другие способы. Однако ни один из этих способов не обходится: a) создание массива и b) назначение каждого элемента. Этот использует iterator.
byte[] byteArray = new byte[byteList.size()];
int index = 0;
for (byte b : byteList) {
byteArray[index++] = b;
}
Метод toArray()
звучит как хороший выбор.
Обновление: Хотя, как любезно отметили люди, это работает со значениями «в штучной упаковке». Таким образом, простой for
-loop также выглядит очень хорошим выбором.
хорошо его в одну сторону, но создаст байт [], который требует отдельного распаковки элементов. – mysomic
Все значения байтов хранятся как неизменяемый объект (см. Http://today.java.net/pub/a/today/2005/03/24/autoboxing.html). Таким образом, распаковка (возможно) незначительна с точки зрения производительности. Было бы интересно измерить. Ну, не * интересно *. –
, и вам понадобится unboxing в любом случае, если вы хотите (примитивные) байты –
Использование Bytes . toArray (Collection<Byte>)
(из Guava библиотеки Google.)
Пример:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.google.common.primitives.Bytes;
class Test {
public static void main(String[] args) {
List<Byte> byteList = new ArrayList<Byte>();
byteList.add((byte) 1);
byteList.add((byte) 2);
byteList.add((byte) 3);
byte[] byteArray = Bytes.toArray(byteList);
System.out.println(Arrays.toString(byteArray));
}
}
Или так же, используя PCJ:
import bak.pcj.Adapter;
// ...
byte[] byteArray = Adapter.asBytes(byteList).toArray();
- 1. Получить размер байта списка <T>
- 2. Создание zip-файла из байта
- 3. Создание байта из целого числа
- 4. Создание списка <myClass>
- 5. Создание списка списка <objects> из массива объектов
- 6. Создание изображения с байта []
- 7. Ionic Zip: создание zip-файла из байта []
- 8. Создание байта [] в PowerShell
- 9. Создание списка кортежей из списка
- 10. Получите половину байта из байта
- 11. Создание списка из числа, а затем создание листинга из списка
- 12. Создание словаря из списка строк (создание ключей из элементов списка)
- 13. Создание базового класса из списка <T>
- 14. C# Создание словаря из списка <Dictionary>
- 15. Создание XML-документа из списка <string> в C#
- 16. Создание узлов из списка <XElement> с помощью LINQ
- 17. Spark: Создание объекта RDD из списка <Object> RDD
- 18. Создание списка из файла
- 19. Создание строки из списка
- 20. Создание словаря из списка
- 21. Создание списка из словаря
- 22. Создание списка из пар
- 23. Создание словаря из списка
- 24. Создание JsonArray из списка
- 25. Создание изображения из списка
- 26. Создание массива из списка
- 27. Создание списка из массива
- 28. Создание строки из списка
- 29. создание списка из таблицы
- 30. Создание каталогов из списка
-1 Потому что вы просите наиболее эффективнее вместо простейшего, самого чистого, простого для понимания путь. Почему так много людей тратит столько времени на микрооптимизацию? – starblue
starblue «самый эффективный» может означать «проще всего писать и поддерживать», что, вероятно, подразумевает простейший и чистый. Эффективное слово не должно ссылаться на производительность. –
+1 Потому что иногда вы делали домашнее задание (профилирование) и действительно нуждались в этой оптимизации. Вопрос, как правило, имеет значение, даже не обязательно в случае с ОП. –