數(shù)組在java中的擴(kuò)容的實例方法
在使用數(shù)組的時候,因為大小的限制,難免會出現(xiàn)不夠用的現(xiàn)象。直接給數(shù)據(jù)對象擴(kuò)容是不可行的,這時候就需要我們找尋一些其他的方法。本篇先為大家簡單分析擴(kuò)容的原理,然后創(chuàng)建一個數(shù)組供大家使用,最后提供兩種數(shù)組擴(kuò)容方法:for循環(huán)和Arrays,下面一起來看具體的操作。
1.擴(kuò)容的原理
(1)Java數(shù)組對象的大小是固定不變的,數(shù)組對象是不可擴(kuò)容的。
(2)利用數(shù)組復(fù)制方法可以變通的實現(xiàn)數(shù)組擴(kuò)容。
(3)System.arraycopy()可以復(fù)制數(shù)組。
(4)Arrays.copyOf()可以簡便的創(chuàng)建數(shù)組副本。
(5)創(chuàng)建數(shù)組副本的同時將數(shù)組長度增加就變通的實現(xiàn)了數(shù)組的擴(kuò)容。
2.先創(chuàng)建數(shù)組
import java.util.Arrays; //數(shù)組的擴(kuò)容示例 public class Test { public static void main(String [] args){ //創(chuàng)建一個原始數(shù)組,并做好初始化。 // int [] arry = {1,3,5,7,9}; int arry[] =new int[]{1,3,5,7,9}; int arry1[]=new int[7];//新建一個新數(shù)組這里的7=arry.length+需要擴(kuò)容的長度 System.out.println("打印原始數(shù)組的長度為:"+arry.length); System.out.println("打印新數(shù)組的長度為:"+arry1.length); //驗證該數(shù)組有沒有創(chuàng)建完成,可以獲取一下數(shù)組元素看看能不能成功。 // System.out.println(arry[1]); //把從舊數(shù)組中獲取的數(shù)據(jù)一個一個的存到新的數(shù)組里面去,并新增兩個數(shù):11,13。 //如何把數(shù)據(jù)存到數(shù)組里面去,使用arry1[0]=1; /*
3.方法一:循環(huán)遍歷原始數(shù)組arry,長度是固定的,所以用for循環(huán)。
//1、先完成復(fù)制數(shù)組 for(int i=0;i<arry.length;i++){ arry1[i] = arry[i]; } //2、再完成賦值插入操作,即已完成數(shù)組的擴(kuò)容操作。 arry1[5]=11; arry1[6]=13; System.out.println("新數(shù)組為:"+arry1[5]); System.out.println("新數(shù)組為:"+arry1[6]); */ /*
4.方法二:使用java的util包的Arrays類的copyOf(原數(shù)組名,新數(shù)組長度)方法來進(jìn)行復(fù)制。
arry1 = Arrays.copyOf(arry,arry.length+2); arry1[5] = 11; arry1[6] = 13; System.out.println("新數(shù)組為:"+arry1[5]); System.out.println("新數(shù)組為:"+arry1[6]);
以上就是數(shù)組在java中的擴(kuò)容方法,這兩種方法相對新手而言,是非常容易實現(xiàn)擴(kuò)容的。
相關(guān)實例擴(kuò)展:
import java.util.Arrays; public class HelloWorld { public static void main(String[] args){ // Scanner s = new Scanner(System.in); // System.out.println("請輸入一個數(shù)字"); // int num = s.nextInt(); int []a = {1,2,3,4,5}; int []b = new int[a.length] ; //1、源數(shù)組 //2、源數(shù)組的哪個位置開始 //3、目標(biāo)數(shù)組 //4、目標(biāo)數(shù)組的哪個位置開始存放 //5、拷貝幾個 //System.arraycopy(a, 0, b, 0, a.length); //Demoe.PrintArray(b); //擴(kuò)容--->擴(kuò)容了一倍 //a = Arrays.copyOf(a, 2*a.length) ; //Demoe.PrintArray(a); a = insertArray(a , 3 , 100) ; //打印數(shù)組 System.out.println(Arrays.toString(a)); } //寫一個函數(shù),向整數(shù)數(shù)組的任意pos位置插入一個元素value public static int[] insertArray(int []a , int pos , int value){ if(pos < 0 || pos > a.length + 1) //索引下標(biāo)不對,直接返回源數(shù)組 return a ; //放入一個元素,先擴(kuò)容,后復(fù)制 a = Arrays.copyOf(a, a.length+1) ; for(int i = a.length - 1 ; i > pos ; i--){ a[i] = a[i-1] ; //后移動 } a[pos] = value ; return a ; } }
到此這篇關(guān)于數(shù)組在java中的擴(kuò)容的實例方法的文章就介紹到這了,更多相關(guān)數(shù)組在java中的擴(kuò)容方法淺析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Long和Integer相互轉(zhuǎn)換方式
這篇文章主要介紹了關(guān)于Long和Integer相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08Mybatis插入Oracle數(shù)據(jù)庫日期型數(shù)據(jù)過程解析
這篇文章主要介紹了Mybatis插入Oracle數(shù)據(jù)庫日期型數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09Spring 事件監(jiān)聽機(jī)制實現(xiàn)跨模塊調(diào)用的思路詳解
之前一個項目,有兩個模塊,A 模塊需要依賴 B 模塊,但現(xiàn)在 B 模塊有地方需要調(diào)用 A 模塊的方法,如果直接依賴,又會產(chǎn)生循環(huán)依賴問題,最終選擇使用 spring 的事件監(jiān)聽來解決該問題,下面給大家介紹Spring 事件監(jiān)聽機(jī)制實現(xiàn)跨模塊調(diào)用的思路,感興趣的朋友一起看看吧2024-05-05json如何解析混合數(shù)組對象到實體類的list集合里去
這篇文章主要介紹了json解析混合數(shù)組對象到實體類的list集合里去的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06spring+Jpa多數(shù)據(jù)源配置的方法示例
這篇文章主要介紹了spring+Jpa多數(shù)據(jù)源配置的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08SpringBoot的WebSocket實現(xiàn)單聊群聊
這篇文章主要為大家詳細(xì)介紹了SpringBoot的WebSocket實現(xiàn)單聊群聊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-02-02