迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便