關(guān)于Java中數(shù)組切片的幾種方法(獲取數(shù)組元素)
1.問(wèn)題
數(shù)組切片是一種獲取給定數(shù)組的子數(shù)組的方法。假設(shè),a[] 是一個(gè)數(shù)組。它有 8 個(gè)元素,索引從 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ù)組的切片:
- 通過(guò)復(fù)制元素
- 通過(guò)使用 copyOfRange() 方法
- 使用 Java 8 流
2.方法
1)通過(guò)復(fù)制元素
- 首先,我們找到給定數(shù)組的開(kāi)始和結(jié)束索引。
- 之后,我們創(chuàng)建一個(gè)大小為 (endIndex - startIndex) 的空數(shù)組(切片數(shù)組)。
- 從給定的數(shù)組中,將元素(從 startIndex)復(fù)制到切片數(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ù)組復(fù)制到新創(chuàng)建的切片數(shù)組
for (int i = 0; i < slicedArray.length; i++)
{
slicedArray[i] = array[startIndex + i];
}
return slicedArray;
}
}結(jié)果如下:
Slice of Array: [3, 4, 5, 6, 7, 8]
2)通過(guò)使用 copyOfRange() 方法
copyOfRange()方法屬于Java Arrays類(lèi)。- 它將
數(shù)組的指定范圍復(fù)制到新創(chuàng)建的數(shù)組(切片數(shù)組)中,并從原始數(shù)組返回包含指定范圍的新創(chuàng)建的數(shù)組。 - 創(chuàng)建數(shù)組切片需要 O(n) 時(shí)間,存儲(chǔ)元素需要
O(n)空間,其中 n 是結(jié)果數(shù)組的元素?cái)?shù)。
public static int[] copyOfRange(int[] original, int from, int to)
它拋出以下異常:
ArrayIndexOutOfBoundsException:如果 from 小于 0 或者 from 大于指定數(shù)組的長(zhǎng)度。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;
}
}結(jié)果如下:
Slice of Array: [3, 4, 5, 6, 7, 8]
3)使用 Java 8 流
通過(guò)使用以下步驟
- 我們可以使用 Java 8 Stream 找到數(shù)組的切片。
- 首先,找到 startIndex 和 endIndex 數(shù)組。
- 使用 range() 方法將元素(在范圍內(nèi))轉(zhuǎn)換為原始流。
- 使用 map() 方法映射指定數(shù)組中的指定元素。
- 通過(guò)調(diào)用 toArray() 方法,將映射數(shù)組轉(zhuǎn)換為數(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ù)組的切片并將其存儲(chǔ)在數(shù)組 slcarray[] 中
// range() 方法將元素轉(zhuǎn)換為流
// 使用 lambda 表達(dá)式獲取 int 流的元素
// 使用 toArray() 方法將映射元素轉(zhuǎn)換為切片數(shù)組
int[] slcarray = IntStream.range(startIndex, endIndex).map(i -> array[i]).toArray();
return slcarray;
}
}結(jié)果如下:
Slice of Array: [3, 4, 5, 6, 7, 8]
到此這篇關(guān)于關(guān)于Java中數(shù)組切片的幾種方法(獲取數(shù)組元素)的文章就介紹到這了,更多相關(guān)Java 數(shù)組切片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于springboot中對(duì)sqlSessionFactoryBean的自定義
這篇文章主要介紹了springboot中對(duì)sqlSessionFactoryBean的自定義方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Java游戲開(kāi)發(fā)之俄羅斯方塊的實(shí)現(xiàn)
俄羅斯方塊是一個(gè)最初由阿列克謝帕吉特諾夫在蘇聯(lián)設(shè)計(jì)和編程的益智類(lèi)視頻游戲。本文和大家分享了利用Java語(yǔ)言實(shí)現(xiàn)這一經(jīng)典的小游戲的示例代碼,需要的可以參考一下2022-05-05
SpringBoot整合Mybatis-Plus+Druid實(shí)現(xiàn)多數(shù)據(jù)源配置功能
本文主要講解springboot?+mybatisplus?+?druid?實(shí)現(xiàn)多數(shù)據(jù)源配置功能以及一些必要的準(zhǔn)備及代碼說(shuō)明,具有一定的參考價(jià)值,感興趣的小伙伴可以借鑒一下2023-06-06
mybatis對(duì)于list更新sql語(yǔ)句的寫(xiě)法說(shuō)明
這篇文章主要介紹了mybatis對(duì)于list更新sql語(yǔ)句的寫(xiě)法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Java對(duì)xls文件進(jìn)行讀寫(xiě)操作示例代碼
Java開(kāi)發(fā)項(xiàng)目中經(jīng)常會(huì)碰到處理Excel文件中數(shù)據(jù)的情況,下面這篇文章主要給大家介紹了利用Java對(duì)xls文件進(jìn)行讀寫(xiě)操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-08-08
Java聊天室之實(shí)現(xiàn)獲取Socket功能
這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)易聊天室之實(shí)現(xiàn)獲取遠(yuǎn)程服務(wù)器和客戶(hù)機(jī)的IP地址和端口號(hào)功能,文中的示例代碼講解詳細(xì),需要的可以了解一下2022-10-10
Spring配置動(dòng)態(tài)數(shù)據(jù)源實(shí)現(xiàn)讀寫(xiě)分離的方法
這篇文章主要介紹了利用Spring配置動(dòng)態(tài)數(shù)據(jù)源實(shí)現(xiàn)讀寫(xiě)分離的方法,文中通過(guò)示例代碼介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,藕需要的朋友可以一起學(xué)習(xí)學(xué)習(xí)。2017-01-01
使用Jenkins Pipeline自動(dòng)化構(gòu)建發(fā)布Java項(xiàng)目的方法
這篇文章主要介紹了使用Jenkins Pipeline自動(dòng)化構(gòu)建發(fā)布Java項(xiàng)目的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
java中構(gòu)造方法和普通方法的區(qū)別說(shuō)明
這篇文章主要介紹了java中構(gòu)造方法和普通方法的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08

