日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java自定義長度可變數組的操作

瀏覽:27日期:2022-08-17 11:13:24

我們都知道數組是線性的、類型固定、內存地址連續、定長的,主要是數組一旦被定義,那么它的長度也就定下來了,只能添加有限的數據。而長度可變的數組是要將這個長度打破,實現數組數據無限增加

那么定義長度可變的數組就可以用兩個數組來實現數組長度的變化。為了避免每次增加數據或刪除數據時都要重新開辟空間,我先設定原數組為固定長,在當數組放滿時,一次增加一定的長度,這樣 節省了開辟空間的時間

因為數組里的數據類型是不確定的,所以用泛型比較好

public class MyList<E> { private int rongliang;//容量 private int zengliang;//增量 private int num;//數量 //定義一個原數組 //Object類包含所有的類型,所以定義數組是用Object類 private Object[] src; //三個不同的構造方法 public MyList(){ this(10,10); } public MyList(int rongliang){ this(rongliang,10); } public MyList(int rongliang,int zengliang){ this.rongliang = rongliang; this.zengliang = zengliang; src = new Object[rongliang]; }}

在MyList中實現在數組中添加數據,要考慮到數組中的數據數量小于數組長度時,可以直接在數組為null處添加數據,但當數組的數量大于等于數組長度時,要先重新定義一個數組,長度是原數組加增量,然后再添加數據

public void add(E s){ //判斷數組中的數據數量num是否大于數組的長度(容量),超出則需擴容 if(num>=src.length){ //定義一個新的數組,長度是原有的長度加增量 Object arr[] = new Object[src.length+zengliang]; //拷貝數組數據 System.arraycopy(arr, 0, arr, 0, src.length); src = arr; } //如果num不大于數組的長度,則不需擴容,直接加入 //如果num大于等于數組長度,則需執行上面的if語句擴容,再加入數據 //最后num++ src[num++] = s; }

取出指定下標的數據,因為傳入的是下標的參數,所以要判斷數組的下標是否越界,拋出異常

public E get(int index){ //拋出異常 if(index<0 || index>=num){ throw new IndexOutOfBoundsException('下標越界!index:'+index+',size:'+num); } //強制轉換成E類型 return (E)src[index]; }

修改指定下標的數據,因為傳入的是下標的參數,所以要判斷數組的下標是否越界,拋出異常

public void modify(int index,E s){ //拋出異常 if(index<0 || index>=num){ throw new IndexOutOfBoundsException('下標越界!index:'+index+',size:'+num); } src[index] = s; }

刪除指定下標的數據,當數組中null值的長度大于等于增量時,要將數組的容量減小,防止浪費

public void delete(int index){ //拋出異常 if(index<0 || index>=num){ throw new IndexOutOfBoundsException('下標越界!index:'+index+',size:'+num); } //將>index的數據依次向前移動一位 System.arraycopy(src, index+1, src, index, num-index-1); num--; //減少容量的方法 if(src.length-num>=zengliang){ //定義一個新的數組,長度是原先數組的長度減去增量 Object arr[] = new Object[src.length-zengliang]; //拷貝數組 System.arraycopy(src, 0, arr, 0, num); src = arr; } }

將指定下標處的數據改為指定的數據

public void insert(int index,E s){ //拋出異常 if(index<0 || index>=num){ throw new IndexOutOfBoundsException('下標越界!index:'+index+',size:'+num); } //判斷數組中的數據數量num是否大于數組的長度(容量),超出則需擴容 if(num>=src.length){ //定義一個新的數組,長度是原有的長度加增量 Object arr[] = new Object[src.length+zengliang]; //拷貝數組數據 System.arraycopy(src, 0, arr, 0, src.length); src = arr; } //將>index的數據依次向后移動一個位置 //arraycopy()是可以將數據自己拷貝給自己 System.arraycopy(src, index, src, index+1, num-index); //插入數據 src[index] = s; num++; }

最后在寫個獲取數組中數據的個數,而不是數組的長度

public int size(){ return num; }

寫個測試類,來測試這個長度可變的數組是否可行

public class test { public static void main(String[] args) { //創建一個MyList對象 // 在創建對象時明確類型 MyList<String> list = new MyList<String>(); //添加數據 list.add('a'); list.add('b'); list.add('c'); list.add('d'); list.add('e'); list.add('f'); list.add('g'); list.add('h'); list.add('i'); list.add('j'); //遍歷數組 for(int i=0;i<list.size();i++){ String s = list.get(i); System.out.print(s+' '); } System.out.println(''); int n = list.size(); System.out.println('數據個數為:'+n); System.out.println('**********************************************'); //修改指定位置的數據 list.modify(1, 'QQ'); //遍歷數組 for(int i=0;i<list.size();i++){ String s = list.get(i); System.out.print(s+' '); } System.out.println(''); int m = list.size(); System.out.println('數據個數為:'+m); System.out.println('**********************************************'); //刪除指定位置的數據 list.delete(2); //遍歷數組 for(int i=0;i<list.size();i++){ String s = list.get(i); System.out.print(s+' '); } System.out.println(''); int k = list.size(); System.out.println('數據個數為:'+k); System.out.println('**********************************************'); //在指定位置插入指定的數據 list.insert(3, 'zr'); list.insert(3, 'qi'); //遍歷數組 for(int i=0;i<list.size();i++){ String s = list.get(i); System.out.print(s+' '); } System.out.println(''); int h = list.size(); System.out.println('數據個數為:'+h); System.out.println('**********************************************'); } }

最終數組的結果為:

a b c d e f g h i j 數據個數為:10**********************************************a QQ c d e f g h i j 數據個數為:10**********************************************a QQ d e f g h i j 數據個數為:9**********************************************a QQ d qi zr e f g h i j 數據個數為:11**********************************************

補充:在Java中創建一個自定義長度的數組并輸入每個元素

用到知識點:數組、方法、Scanner、for循環。

作業:

package Array;import java.util.Scanner;public class InputArray {public static void main(String[] args) {shuzu();//方法調用 } //方法定義 public static void shuzu() { //將輸入的數字作為數組的長度 Scanner sz = new Scanner(System.in); System.out.println('請輸入數組長度:');//提示可以操作 int[] cd = new int[sz.nextInt()];//數組初始化完成 System.out.println('當前數組長度定義為:'+cd.length);//再提示一下結果 //用for循環為每一個元素賦值 for (int i = 0; i < cd.length; i++) { int q = i+1;//這里q用作提示,避免提示出第0個元素。 System.out.println('請輸入第'+q+'個元素的值:'); cd [i] = sz.nextInt(); System.out.println('第'+q+'個元素定義為'+cd[i]+'。'); } sz.close(); //數組內各元素已經完成賦值,但是再用for循環遍歷一次 System.out.print('數組內元素全部完成賦值:');//繼續提示一下 for (int i2 = 0; i2 < cd.length; i2++) { if(i2 == cd.length-1) { System.out.print(cd[i2]+'。'); }else { System.out.print(cd[i2]+'、'); } } return;//方法結束,rentun; } }

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品任我爽爆在线播放| 日本成人中文字幕| 日韩亚洲精品在线观看| 一区二区国产在线| 好看的亚洲午夜视频在线| 正在播放日韩精品| 免费观看亚洲天堂| 国产一区二区视频在线看| 欧美综合另类| 久久精品免视看国产成人| 视频一区视频二区中文字幕| 久热综合在线亚洲精品| 天堂va欧美ⅴa亚洲va一国产| 亚洲三级网站| 美女国产一区二区三区| 麻豆精品av| 性欧美xxxx免费岛国不卡电影| 久久九九99| 亚洲一区二区免费在线观看| 青青草国产精品亚洲专区无| 国产精品视频3p| 国产欧美二区| 开心激情综合| 国户精品久久久久久久久久久不卡| 亚洲高清激情| 免费在线成人网| 久久亚洲精品伦理| 精品淫伦v久久水蜜桃| 国产一区二区三区自拍| 欧美日一区二区在线观看| 亚洲美女久久精品| 亚洲欧美日韩专区| 免费在线播放第一区高清av| 亚洲精品在线观看91| 国产精品久一| 麻豆9191精品国产| 国产欧美三级| 合欧美一区二区三区| 精品国产精品国产偷麻豆| 婷婷成人av| 日本aⅴ精品一区二区三区| 亚洲精品第一| 日本不良网站在线观看| 卡一精品卡二卡三网站乱码| 精品一区在线| 国产在线看片免费视频在线观看| 中文不卡在线| 欧美精品九九| 欧美肉体xxxx裸体137大胆| 精品视频久久| 国产欧美另类| 一区二区国产精品| 欧美午夜精品一区二区三区电影| 久久99国产精品视频| 国产乱码精品一区二区三区四区| 免费高清在线一区| 影音国产精品| 日韩视频一区| 久久成人一区| 午夜一级久久| 日韩中文字幕91| 亚洲视频电影在线| 亚洲涩涩av| 亚洲欧美久久久| 蜜桃久久av| 日本在线不卡视频一二三区| 国产色综合网| 亚洲一区观看| 日韩精品亚洲一区二区三区免费| 亚洲精品少妇| 日本午夜精品久久久久| 欧美日本二区| 精品国产亚洲一区二区在线观看| 狂野欧美性猛交xxxx| 久久精品国产网站| 三上亚洲一区二区| 久久久久国产精品一区二区| 999精品色在线播放| re久久精品视频| 日韩精品一页| 国产精品sss在线观看av| 精品精品99| 日韩天堂在线| 亚洲一区二区小说| 久久国产尿小便嘘嘘| 超碰在线99| 亚洲一二av| 久久一区精品| 老鸭窝毛片一区二区三区| 人人爱人人干婷婷丁香亚洲| 国产精品二区不卡| 亚洲伊人影院| 黄色在线网站噜噜噜| 男女激情视频一区| 九九久久国产| 影音国产精品| 欧美日韩视频免费看| 久久精品国产福利| 一区二区亚洲精品| 国产精品久久免费视频| 黄色精品视频| 在线日韩视频| 国产毛片精品| 久久精品不卡| 日韩欧美三区| 性欧美69xoxoxoxo| 亚洲人成在线影院| 色一区二区三区| 国产精选一区| 群体交乱之放荡娇妻一区二区| 午夜宅男久久久| 久久天堂av| 在线精品国产亚洲| 麻豆网站免费在线观看| 久久激情五月婷婷| 久热精品在线| 欧美va天堂在线| 成人精品久久| 国产欧美日本| 亚洲精品动态| 伊人成人在线视频| 99精品视频在线| 日韩一区二区三区免费视频| 日韩精品影视| 天堂а√在线最新版中文在线| 日韩在线黄色| 日韩午夜视频在线| 丝袜美腿诱惑一区二区三区| 国产成人久久精品麻豆二区| 综合五月婷婷| 黄页网站一区| 美女国产精品| 欧美精品一卡| 老牛影视一区二区三区| 久久精品国产99久久| 久久精品动漫| 成人在线免费观看网站| 欧美精品导航| 日本不卡在线视频| 婷婷综合社区| 精品国产精品国产偷麻豆| 亚洲精品免费观看| 99视频在线精品国自产拍免费观看| 国产精品xxx在线观看| 亚洲精品第一| 亚洲欧洲日韩精品在线| 日韩一区免费| 日韩综合在线| 国产精品日韩| 国产乱人伦精品一区| 精品99在线| 日韩视频一区| 久久国际精品| 91精品国产91久久久久久黑人| 亚洲一区二区三区免费在线观看| 偷拍亚洲精品| 国产成人在线中文字幕| 91亚洲国产| 亚洲毛片视频| 人在线成免费视频| 中文字幕亚洲影视| 国产成人a视频高清在线观看| 午夜久久一区| 国产一区调教| 亚洲精品自拍| 欧美亚洲精品在线| 欧美日韩亚洲一区| 国产偷自视频区视频一区二区| 国产精品一区二区av交换| 国产精品婷婷| 国产福利91精品一区二区| 一区二区三区四区在线观看国产日韩| 亚洲人成精品久久久| 亚洲综合电影| 你懂的网址国产 欧美| 妖精视频成人观看www| 精品久久福利| 蜜桃久久久久| 视频一区中文字幕国产| 毛片在线网站| 韩日一区二区| 精品久久久中文字幕| 亚洲色图国产| 午夜亚洲一区| 91高清一区| 1000部精品久久久久久久久| 91免费精品| 国产欧美一区二区三区米奇| 中文无码久久精品| 欧美午夜不卡影院在线观看完整版免费| 久草精品视频| 国内精品亚洲| 久久影院午夜精品| 麻豆视频在线观看免费网站黄| 国产伦精品一区二区三区视频| 青草国产精品| 国产色99精品9i| 国产精品videossex久久发布 | 精品视频亚洲| 欧美黄色一区二区|