【问题标题】:byte[] operations in JavaJava中的字节[]操作
【发布时间】:2010-03-30 15:34:47
【问题描述】:

假设我有字节数组:

字节[] arr = 新字节[] { 0, 1, 2, 3, 4 };

平台是否有我可以用来玩这个数组的函数 - 例如,如何反转它(得到 4、3、2、1、0)?或者,如何反转它的一部分(2,1,0,3,4)?获取数组(0,1,2,3)的一部分?

我知道我可以手动编写函数,但我很好奇我是否缺少我应该知道的平台中有用的 util 函数(并且无法使用谷歌找到任何有用的指南)。

谢谢!

【问题讨论】:

    标签: java android


    【解决方案1】:

    Arrays 类中有一些静态方法(我不知道在 dalvik/android 上是否可用)

    【讨论】:

    • Arrays 类在 Android 中可用。但是它没有像 kape123 要求的 invert() 或 reverse() 方法。但是,如果您使用的是 Collections 而不是数组,则 Collections 类确实具有此功能。
    • 所以,调用 Arrays.asList 将显示有用 ;-)
    【解决方案2】:

    java.util.Arrays 在标准 API 中有一些与数组相关的实用方法。来自 Apache Commons Lang 的 ArrayUtils 拥有更多功能。

    但是请注意,Java 没有将数组切片作为“视图”的概念,即这种方法返回的“数组的一部分”将始终是一个副本。

    【讨论】:

      【解决方案3】:

      java.util.Arrays 包含几个辅助方法(sort()equals()fill()toString())。如果这还不够,您可以将byte 原语转换为Byte 对象(创建一个新数组)并使用new ArrayList (Arrays.asList()) 获取一个集合,您可以使用java.util.Collections 中的许多方法对其进行修改。

      如果你在 RT 之外看,有Commons Primitives

      Commons Primitives 提供了一个专为与原始类型一起使用而设计的集合和实用程序库。

      另一个选项是guava-libraries 项目,它也支持原语:

      该项目包含我们在无数 Java 项目中使用的几个 Google 核心 Java 库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        • 1970-01-01
        • 2011-09-26
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多