gpt4 book ai didi

java - 将整数列表转换为字节数组

转载 作者:行者123 更新时间:2023-12-02 05:31:50 26 4
gpt4 key购买 nike

我有一个大尺寸(3912984 或更多)的 LinkedList < Integer >,我想将这些元素复制到字节数组中。整数是 0 或 1,所以我不需要对数组的大小进行任何更改,我只想将元素一一复制,准确地说是它们的样子。当然,我知道最简单的方法是:

 for(int i = 0; i < list.size(); i++)      
array[i] = (byte)(int) list.get(i);

但是这个方法太慢了,我的程序在几小时前还没有结束!你能知道另一种方法(更快,比如.NET的Buffer.BlockCopy())或者我必须改变数据结构吗?

最佳答案

使用 Java 8 实现此目的的另一种方法:

List<Integer> enteros = Stream.of(1, 2, 3, 4, 5).collect(Collectors.toList());
Byte[] bytes = enteros.stream().map(entero -> entero.byteValue()).toArray(Byte[]::new);

这是另一个测试转换时间的复杂示例:

List<Integer> enteros = new LinkedList<>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");

System.out.println("Init list: " + LocalTime.now().format(formatter));
// Fill array with 0 and 1
for(int i = 0; i < 9999999; i++) enteros.add(ThreadLocalRandom.current().nextInt(0, 2));
System.out.println("List complete: " + LocalTime.now().format(formatter));

System.out.println("Init list convert: " + LocalTime.now().format(formatter));
Byte[] bytes = enteros.stream().map(entero -> entero.byteValue()).toArray(Byte[]::new);
System.out.println("End convert! " + LocalTime.now().format(formatter));

关于java - 将整数列表转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25460810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com