小编Rod*_*ada的帖子

使用 Guava 高效转换通用数组

我正在使用Java 7,并且我正在 Guava API 中搜索一种将函数应用于数组的方法,而不必先将其转换为集合。我愿意为此目的创建自己的类,但我不想重新发明轮子呵呵。

所以作为一个总结(如果你不知道我在说什么),这是我迄今为止发现的,你可以用 Guava 来做,以便将一个函数应用于数组,正如我所说的:

Integer[] someNumbers = new Integer[]{1, 2, 3};
Integer[] returnedNumbers = Collections2.transform(Arrays.asList(someNumbers), squareNumberFunction).toArray(new Integer[0]);

assertThat(returnedNumbers).isEqualTo(new Integer[]{1, 4, 9});//Using AssertJ here
Run Code Online (Sandbox Code Playgroud)

但我希望能够做这样的事情:

Integer[] someNumbers = new Integer[]{1, 2, 3};
Integer[] returnedNumbers = Arrays.transform(someNumbers, squareNumberFunction);

assertThat(returnedNumbers).isEqualTo(new Integer[]{1, 4, 9});
Run Code Online (Sandbox Code Playgroud)

理想情况下,我正在谈论的功能是type-safe


编辑

为了进一步澄清问题:

  • 我正在谈论的数组不是原始数组,它们引用复杂的对象(我只使用整数来轻松举例说明我在说什么)。
  • 我无法控制接收发送的结构,它们数组(想象一下遗留代码情况,如果您认为这有助于您更好地理解问题,那么这是可能的)。
  • 转换数组和访问它们时,效率是必须的

java arrays transform function guava

4
推荐指数
1
解决办法
5743
查看次数

标签 统计

arrays ×1

function ×1

guava ×1

java ×1

transform ×1