将字节数组插入 List 的最简洁方法?

2024-01-01

在某些代码中,我正在创建一个字节列表,并希望在构建它时将一个字节数组插入到该列表中。这样做最干净的方法是什么?请参阅下面的代码 - 谢谢。

public class ListInsert {
    public static byte[] getData() {
        return new byte[]{0x01, 0x02, 0x03};
    }

    public static void main(String[] args) {
        final List<Byte> list = new ArrayList<Byte>();
        list.add((byte)0xaa);
        list.add(getData()); // I want to insert an array of bytes into the list here
        list.add((byte)0x55);
    }
}

IF你有一个Byte[] arr-- 引用类型数组 -- 您可以使用Arrays.asList(arr)得到一个List<Byte>.

IF你有一个byte[] arr-- 基元数组 -- 你不能使用Arrays.asList(arr)得到一个List<Byte>。相反,你会得到一个单元素List<byte[]>.

That is, while a byte can be boxed to a Byte, a byte[] DOES NOT get autoboxed to Byte[]!
(also true for other primitives)

所以你有两个选择:

  • 只需迭代每个byte in byte[] and add单独地
  • Use libraries
    • With Apache Commons Lang http://commons.apache.org/lang/, you can convert byte[] to Byte[]
      • You can then Arrays.asList and addAll
    • With Guava http://guava-libraries.googlecode.com/可以转换byte[]立即到List<Byte>

第一个选项如下所示:

byte[] arr = ...;
for (byte b : arr) {
    list.add(b);
}

Guava 的第二个选项如下所示:

// requires Guava
byte[] arr = ...;
list.addAll(Bytes.asList(arr));

这使用Bytes.asList http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/primitives/Bytes.html#asList%28byte...%29 from package com.google.common.primitives http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/primitives/package-summary.html。该包还具有用于其他原语的其他转换实用程序。整个图书馆非常有用。

通过 Apache Commons Lang,您可以使用Byte[] toObject(byte[]) http://commons.apache.org/lang/api-release/org/apache/commons/lang/ArrayUtils.html#toObject%28byte%5B%5D%29 from ArrayUtils:

// requires Apache Commons Lang
byte[] arr = ...;
list.addAll(Arrays.asList(ArrayUtils.toObject(arr)));

相关问题

  • 如何转换int[] into List<Integer>在Java中? https://stackoverflow.com/questions/1073919/how-to-convert-int-into-listinteger-in-java
  • Arrays.asList()没有正常工作? https://stackoverflow.com/questions/1467913/arrays-aslist-not-working-as-it-should
  • 自动装箱的性能影响 https://stackoverflow.com/questions/3430671/performance-impact-of-autoboxing/
  • 最有用的免费第三方 Java 库? https://stackoverflow.com/questions/130095/most-useful-free-third-party-java-libraries
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字节数组插入 List 的最简洁方法? 的相关文章

随机推荐

  • 如何在不调用rs.initiate()的情况下初始化mongodb复制集?

    我尝试使用 replSet 1 启动 mongod 如下所示 mongod dbpath x y replSet 1 但我不断收到诸如 您需要通过调用 rs initiate 来初始化复制集 之类的错误 然后我启动 mongo shell
  • 委托人(用户或服务帐户)缺少资源的 IAM 权限“cloudtasks.tasks.create”

    当我尝试将任务添加到队列时 会抛出上述错误消息 这是我的设置和有关此问题的信息 项目编号 my project 服务帐户 ID my service account 任务队列名称 my queue 任务队列位置 asia northeast
  • 如何在 Docker Alpine 中设置语言环境?

    我可以使用 CentOS 映像设置区域设置 FROM centos ENV LANG en US UTF 8 ENV LC ALL en US UTF 8 但它似乎不适用于 Alpine 图像 如何使用 Alpine 图像设置区域设置 它对
  • 在 ASP.NET MVC 中显示另一个控制器的视图

    是否可以显示另一个控制器的视图 比如说我有一个CategoriesController and a Category NotFound aspx看法 当在CategoriesController 我可以轻松返回View NotFound 现
  • 在 WooCommerce 中显示每个购物车商品的重量

    我正在使用 Woocommerce 并尝试在购物车页面上显示每个产品的产品重量 我用过这个 add action woocommerce cart collaterals myprefix cart extra info function
  • 通过重写URL访问Couchdb数据库URL,带有查询参数

    我的网站用完了 Couch DB 实例 因此我将我的虚拟主机配置为指向 dbname design app rewrite 我希望能够从 Web 浏览器访问索引页面 同时仍然通过 Ajax 访问 Couch DB API 因此我在我的文件中
  • 单击 UISegmentedControl 的一段后显示多行文本,但最初不是 - 更新代码

    我需要在每个段中设置多行文本UISegmentedControl 我尝试了下面的代码 它工作正常 但问题是 当第一次加载页面时 第一次显示分段控件时 它不显示多行文本 但是当我单击其中一段 文本以多行显示 如何解决这个问题 这是代码 voi
  • 实例方法中的静态变量

    假设我有这个程序 class Foo public unsigned int bar static unsigned int counter 0 return counter int main Foo a Foo b 当然这个例子没有任何意
  • python中access数据库表的读写

    我有一个访问数据库 里面是我创建的几张桌子 我想使用 python 读取其中一个表并列出一列中的所有内容 我想将该列表与程序中已创建的另一个列表进行比较 如果该数字与列表中的数字匹配 则在我制作的访问电子表格的同一行新列中输出 是 同样 如
  • MySQL 查询 - 每组最近的条目

    我正在尝试选择表中每组的最新条目 假设我有一个表 blog posts 其中有一列 id 全部唯一 自动递增 post cat 可以是值 category1 或 category2 或 category3 以及一个 publish stat
  • 如何提高 ASP.NET MVC 中从 SQL Server 数据库获取数据的速度 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是 ASP NET MVC5 的新手 我有一个模型Shipping and my dbo Shippings sql是这样的 CRE
  • 检查函数是否被调用为装饰器

    在下面的最小示例中decorate被调用两次 第一次使用 decorate 第二个通过正常函数调用decorate bar def decorate func print func name return func decorate def
  • 在 NetworkX 中合并两个加权图

    我使用 python 多重处理来创建多个不同的 NetworkX 图 然后使用下面的函数来组合这些图 然而 虽然这个函数对于小图工作得很好 但对于较大的图 它会使用大量内存 并且会挂在我的系统和内存密集型 AWS 系统上 仅使用系统中总内存
  • 交换两列 - awk、sed、python、perl

    我有一个大文件中的数据 280 列宽 700 万行长 我需要交换前两列 我想我可以使用某种 awk for 循环来执行此操作 打印 2 1 然后打印到文件末尾的范围 但我不知道如何执行范围部分 而且我无法打印 2 1 美元 3 美元 280
  • 在 API 加载之前在 Cordova 中显示 webView

    我正在使用 PhoneGap Cordova 构建适用于 iOS 和 Android 的应用程序 按照标准行为 在 JavaScript 初始化并且 Cordova API 准备就绪之前 不会显示 webView 所以直到我打电话 docu
  • jquery 添加类到这个被点击的元素

    我生成几行 tr 与任务 现在 可以通过单击某个任务将每个任务标记为完成span 我通过 ajax 请求来做到这一点 这是 HTML table tr td 1 td td span class icon complete a to hea
  • foreach 循环和 stdclass 对象

    我在这里看到了类似的问题 但我似乎无法将解决方案应用于我的问题 我有一个名为 results 的变量 它是从 API 获得的 我将更改专有名词以保护我工作的客户 stdClass Object out gt stdClass Object
  • Laravel 混合编译依赖

    我正在尝试使用vuex 模块装饰器 https github com championswimmer vuex module decoratorsLaravel Mix 项目中的库 使用 TypeScript 但我不断收到错误Uncaugh
  • 比较两个 OpenCV 图像/2D Numpy 数组

    我刚开始使用 OpenCV Python 和 Numpy 但已经成为 Java C C 程序员有一段时间了 我正在实现一个 sigma delta 背景检测器 它执行以下操作 设 i1 为第一张图像 设 i2 为第二张图像 for each
  • 将字节数组插入 List 的最简洁方法?

    在某些代码中 我正在创建一个字节列表 并希望在构建它时将一个字节数组插入到该列表中 这样做最干净的方法是什么 请参阅下面的代码 谢谢 public class ListInsert public static byte getData re