關于Java中數(shù)組切片的幾種方法(獲取數(shù)組元素)
1.問題
數(shù)組切片是一種獲取給定數(shù)組的子數(shù)組的方法。假設,a[] 是一個數(shù)組。它有 8 個元素,索引從 a[0] 到 a[7]
int a[] = {8, 9, 4, 6, 0, 11, 45, 21}
現(xiàn)在,我們要找到從 a[3] 到 a[6] 的數(shù)組索引的一部分。其中 a[3] 是 startIndex,a[6] 是 endIndex。因此,我們得到以下切片
a[] = {6, 0, 11, 45}
有以下三種方法可以找到數(shù)組的切片:
- 通過復制元素
- 通過使用 copyOfRange() 方法
- 使用 Java 8 流
2.方法
1)通過復制元素
- 首先,我們找到給定數(shù)組的開始和結束索引。
- 之后,我們創(chuàng)建一個大小為 (endIndex - startIndex) 的空數(shù)組(切片數(shù)組)。
- 從給定的數(shù)組中,將元素(從 startIndex)復制到切片數(shù)組。最后,打印切片數(shù)組。
public class Test { public static void main(String[] args) { int[] array = {0,1,2,3,4,5,6,7,8,9}; int startIndex = 3, endIndex = 8; int[] slicedArray = getSlice(array, startIndex, endIndex + 1); System.out.println("Slice of Array: "+ Arrays.toString(slicedArray)); } public static int[] getSlice(int[] array, int startIndex, int endIndex) { int[] slicedArray = new int[endIndex - startIndex]; //將數(shù)組元素從原始數(shù)組復制到新創(chuàng)建的切片數(shù)組 for (int i = 0; i < slicedArray.length; i++) { slicedArray[i] = array[startIndex + i]; } return slicedArray; } }
結果如下:
Slice of Array: [3, 4, 5, 6, 7, 8]
2)通過使用 copyOfRange() 方法
copyOfRange()
方法屬于Java Arrays
類。- 它將
數(shù)組的指定范圍復制到新創(chuàng)建的數(shù)組(切片數(shù)組)中
,并從原始數(shù)組返回包含指定范圍的新創(chuàng)建的數(shù)組。 - 創(chuàng)建數(shù)組切片需要 O(n) 時間,存儲元素需要
O(n)
空間,其中 n 是結果數(shù)組的元素數(shù)。
public static int[] copyOfRange(int[] original, int from, int to)
它拋出以下異常:
ArrayIndexOutOfBoundsException
:如果 from 小于 0 或者 from 大于指定數(shù)組的長度。IllegalArgumentException
:如果參數(shù) from 大于 to。NullPointerException
:如果給定的數(shù)組為空。
public class Test { public static void main(String[] args) { int[] array = {0,1,2,3,4,5,6,7,8,9}; int startIndex = 3, endIndex = 8; int[] slicedArray = getSlice(array, startIndex, endIndex + 1); System.out.println("Slice of Array: "+ Arrays.toString(slicedArray)); } public static int[] getSlice(int[] array, int startIndex, int endIndex) { int[] slicedArray = Arrays.copyOfRange(array, startIndex, endIndex); return slicedArray; } }
結果如下:
Slice of Array: [3, 4, 5, 6, 7, 8]
3)使用 Java 8 流
通過使用以下步驟
- 我們可以使用 Java 8 Stream 找到數(shù)組的切片。
- 首先,找到 startIndex 和 endIndex 數(shù)組。
- 使用 range() 方法將元素(在范圍內)轉換為原始流。
- 使用 map() 方法映射指定數(shù)組中的指定元素。
- 通過調用 toArray() 方法,將映射數(shù)組轉換為數(shù)組。 打印切片
public class Test { public static void main(String[] args) { int[] array = {0,1,2,3,4,5,6,7,8,9}; int startIndex = 3, endIndex = 8; int[] slicedArray = getSlice(array, startIndex, endIndex + 1); System.out.println("Slice of Array: "+ Arrays.toString(slicedArray)); } public static int[] getSlice(int[] array, int startIndex, int endIndex) { //獲取數(shù)組的切片并將其存儲在數(shù)組 slcarray[] 中 // range() 方法將元素轉換為流 // 使用 lambda 表達式獲取 int 流的元素 // 使用 toArray() 方法將映射元素轉換為切片數(shù)組 int[] slcarray = IntStream.range(startIndex, endIndex).map(i -> array[i]).toArray(); return slcarray; } }
結果如下:
Slice of Array: [3, 4, 5, 6, 7, 8]
到此這篇關于關于Java中數(shù)組切片的幾種方法(獲取數(shù)組元素)的文章就介紹到這了,更多相關Java 數(shù)組切片內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
關于springboot中對sqlSessionFactoryBean的自定義
這篇文章主要介紹了springboot中對sqlSessionFactoryBean的自定義方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12SpringBoot整合Mybatis-Plus+Druid實現(xiàn)多數(shù)據(jù)源配置功能
本文主要講解springboot?+mybatisplus?+?druid?實現(xiàn)多數(shù)據(jù)源配置功能以及一些必要的準備及代碼說明,具有一定的參考價值,感興趣的小伙伴可以借鑒一下2023-06-06Spring配置動態(tài)數(shù)據(jù)源實現(xiàn)讀寫分離的方法
這篇文章主要介紹了利用Spring配置動態(tài)數(shù)據(jù)源實現(xiàn)讀寫分離的方法,文中通過示例代碼介紹的很詳細,相信對大家的理解和學習具有一定的參考借鑒價值,藕需要的朋友可以一起學習學習。2017-01-01使用Jenkins Pipeline自動化構建發(fā)布Java項目的方法
這篇文章主要介紹了使用Jenkins Pipeline自動化構建發(fā)布Java項目的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04