【发布时间】: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 函数(并且无法使用谷歌找到任何有用的指南)。
谢谢!
【问题讨论】:
假设我有字节数组:
字节[] arr = 新字节[] { 0, 1, 2, 3, 4 };平台是否有我可以用来玩这个数组的函数 - 例如,如何反转它(得到 4、3、2、1、0)?或者,如何反转它的一部分(2,1,0,3,4)?获取数组(0,1,2,3)的一部分?
我知道我可以手动编写函数,但我很好奇我是否缺少我应该知道的平台中有用的 util 函数(并且无法使用谷歌找到任何有用的指南)。
谢谢!
【问题讨论】:
Arrays 类中有一些静态方法(我不知道在 dalvik/android 上是否可用)
【讨论】:
java.util.Arrays 在标准 API 中有一些与数组相关的实用方法。来自 Apache Commons Lang 的 ArrayUtils 拥有更多功能。
但是请注意,Java 没有将数组切片作为“视图”的概念,即这种方法返回的“数组的一部分”将始终是一个副本。
【讨论】:
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 库。
【讨论】: