迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

在 Java 中对数组进行切片

作者:迹忆客 最近更新:2023/09/14 浏览次数:

本文将帮助你在 Java 中将数组切片为子数组。


Java 中的数组切片

数组切片是一种 Java 技术,用于从更广泛的数组中提取子数组。

假设 k[] 是一个数组。它有 7 个组件,编号为 k[0]k[6]

k[] = {5, 6, 7, 8, 9, 10, 11}

现在,我们正在寻找 k[2]k[5] 之间的数组索引切片。startIndex 是 k[2],而 endIndex 是 k[5]

结果,我们得到下面的切片数组:

k[] = {7, 8, 9, 10}

在接下来的部分中,我们将学习如何在 Java 中定位数组切片。


在 Java 中通过复制元素对数组进行切片

这是获取数组切片的内置方法。所提供数组的开始和结束索引最初在此过程中确定。

之后,我们生成一个与大小无关的空数组(切片数组)(endIndex - startIndex)。将项目(从 startIndex)从提供的数组复制到切片数组,最后打印切片数组。

让我们在 Java 程序中使用上述方式来获取所提供数组的切片数组。我们将在这个应用程序中使用一系列原始类型。

import java.util.Arrays;

public class Copy {

    public static int[] getSlice(int[] arr, int stIndx, int enIndx) {

        int[] sclicedArr = new int[enIndx - stIndx];

        for (int i = 0; i < sclicedArr.length; i++) {
            sclicedArr[i] = arr[stIndx + i];
        }

        return sclicedArr;
    }

    public static void main(String args[]) {

        int[] arr = { 20, 65, 87, 19, 55, 93, 76, 98, 54, 21 };

        int stIndx = 2, enIndx = 6;

        int[] sclicedArr = getSlice(arr, stIndx, enIndx + 1);

        System.out.println("Slice of an Array: " + Arrays.toString(sclicedArr));
    }
}

要运行代码,请将程序保存为 Java 文件并在 Java IDE 中运行。

输出:

Java 数组拼接 - 输出 1


使用 Java 中的 copyOfRange() 方法对数组进行切片

Java Array 类包含 copyOfRange() 方法。它将数组的指定范围复制到新形成的数组(切片数组)中,并返回具有原始数组指定范围的新生成的数组。

对数组进行切片需要 O(n) 时间和 O(n) 空间来存储元素,其中 n 是结果数组中的元素数。

语法:

public static int[] copyOfRange(int[] original, int from, int to)

该方法解析以下 3 个参数:

  • original:它是一个必须找到切片的数组。
  • from:它是第一页的索引。它必须在 0 到数组长度的范围内。
  • to:它是最后一个索引。

抛出以下异常:

如果起始索引小于 0 或大于原始数组的长度,则会抛出 ArrayIndexOutOfBoundsException。如果开始索引比结束索引更重要,则会抛出 IllegalArgumentException

如果指定的数组为 null,则会抛出 NullPointerException

import java.util.Arrays;

public class Copy1 {

    public static int[] slice(int[] arr, int stIndx, int enIndx) {

        int[] sclicedArr = Arrays.copyOfRange(arr, stIndx, enIndx);

        return sclicedArr;
    }

    public static void main(String args[]) {

        int[] arr = { 20, 65, 87, 19, 55, 93, 76, 98, 54, 21 };
        int stIndx = 3, enIndx = 8;

        int[] sliceArray = slice(arr, stIndx, enIndx + 1);

        System.out.println("Slice of Array: " + Arrays.toString(sliceArray));
    }
}

要运行代码,请将程序保存为 Java 文件并在 Java IDE 中运行。

输出:

Java 数组拼接 - 输出 2


使用 Java 8 流对数组进行切片

我们可以按照以下说明使用 Java 8 Stream 来发现数组的切片。

  • 首先找到开始和结束索引数组。
  • 使用 range() 函数,将项目(在范围内)转换为原始流。
  • 使用 map() 函数从数组映射提供的元素。
  • 使用 toArray() 函数将映射数组转换为数组。
  • 打印切片数组。
import java.util.Arrays;
import java.util.stream.IntStream;

public class NewClice {

    public static int[] findSlice(int[] arr, int stIndx, int enIndx) {

        int[] slice_arr = IntStream.range(stIndx, enIndx).map(i -> arr[i]).toArray();

        return slice_arr;
    }

    public static void main(String args[]) {

        int[] arr = { 20, 65, 87, 19, 55, 93, 76, 98, 54, 21, 657 };
        int stIndx = 2, enIndx = 8;

        int[] slice_arr = findSlice(arr, stIndx, enIndx + 1);

        System.out.println("Slice of array for the specific range is: " + Arrays.toString(slice_arr));
    }
}

要运行代码,请将程序保存为 Java 文件并在 Java IDE 中运行。

Java 数组拼接 - 输出 3

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Java 中的打乱数组

发布时间:2023/09/11 浏览次数:173 分类:Java

本教程演示了如何在 Java 中打乱数组。

克隆 Java 数组

发布时间:2023/09/11 浏览次数:67 分类:Java

本教程将演示 Java 数组的不同 Clone 方法。

在 Java 中比较数组

发布时间:2023/09/11 浏览次数:76 分类:Java

本教程使用不同的代码示例演示了在 Java 中比较数组的各种方法。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便