首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -在步骤中对任何数组进行切片

Java -在步骤中对任何数组进行切片
EN

Stack Overflow用户
提问于 2016-06-21 02:46:25
回答 3查看 12.2K关注 0票数 4

在python中,我们可以执行以下操作:

代码语言:javascript
复制
 array = [0,1,2,3,4,5,6,7,8,9,10]
 new_array= array[::3]
 print(new_array)
>>>[0,3,6,9]

在Java中有没有这样的等价物?我一直在寻找这种类型的数组切片,但我一直没有运气。任何帮助都是最好的,谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-21 03:26:24

如果您使用的是Java 8,则可以使用streams并执行以下操作:

代码语言:javascript
复制
int [] a = new int [] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

// filter out all indices that evenly divide 3
int [] sliceArr = IntStream.range(0, a.length).filter(i -> i % 3 == 0)
    .map(i -> a[i]).toArray();

System.out.println(Arrays.toString(sliceArr));

输出:0,3,6,9

票数 5
EN

Stack Overflow用户

发布于 2016-06-21 03:21:35

数组中有一个方法可能会有所帮助。

代码语言:javascript
复制
 int[] newArr = Arrays.copyOfRange(arr, 5,10); 

它显然远不如python实现强大。

票数 3
EN

Stack Overflow用户

发布于 2016-06-21 03:47:13

Java没有这方面的内置机制。你可以写一个助手函数:

代码语言:javascript
复制
public static int[] sliceArray(int[] arr, int spacing) {
    int curr = 0;
    int[] newArr = new int[((arr.length - 1) / spacing) + 1];
    for (int i = 0; i < newArr.length; ++i) {
        newArr[i] = arr[curr];
        curr += spacing;
    }
    return newArr;
}

Example

请注意,如果可以使用Java 8,Michael的答案会更好(或者至少不那么冗长)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37929671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档