Java从数组中获取范围

时间:2018-02-09 15:07:13

标签: java arrays scala syntax

Java有一种Array drop方法吗?
在Scala中我们有:Array.drop(10).take(16)或者可能需要一系列阵列的成员?
在Java中,我只能做array[10]例如。

2 个答案:

答案 0 :(得分:2)

Arrays::copyOfRange

它有三个参数:

  • original:源数组
  • from:起始索引,包括
  • to:结束索引,独占

不是它返回一个新数组,这意味着如果更改结果数组的值,原始数组不会更改。

该方法被重载以适用于所有基本类型和对象。

以下是一个使用示例:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        final int[] source = IntStream.range(0, 10).toArray()
        System.out.println(Arrays.toString(source));

        final int[] result = Arrays.copyOfRange(source, 3, 8);
        System.out.println(Arrays.toString(result));
    }
}

打印哪些:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7]

有关详细信息,请参阅the docs

答案 1 :(得分:1)

我认为通过流式传输数据来实现这种语义最简单:

SomeClass[] sourceArray = /* something */;

SomeClass[] result = 
    Arrays.stream(sourceArray).skip(10L).limit(16L).toArray(SomeClass[]::new);