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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java自定義長(zhǎng)度可變數(shù)組的操作

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

我們都知道數(shù)組是線性的、類型固定、內(nèi)存地址連續(xù)、定長(zhǎng)的,主要是數(shù)組一旦被定義,那么它的長(zhǎng)度也就定下來(lái)了,只能添加有限的數(shù)據(jù)。而長(zhǎng)度可變的數(shù)組是要將這個(gè)長(zhǎng)度打破,實(shí)現(xiàn)數(shù)組數(shù)據(jù)無(wú)限增加

那么定義長(zhǎng)度可變的數(shù)組就可以用兩個(gè)數(shù)組來(lái)實(shí)現(xiàn)數(shù)組長(zhǎng)度的變化。為了避免每次增加數(shù)據(jù)或刪除數(shù)據(jù)時(shí)都要重新開辟空間,我先設(shè)定原數(shù)組為固定長(zhǎng),在當(dāng)數(shù)組放滿時(shí),一次增加一定的長(zhǎng)度,這樣 節(jié)省了開辟空間的時(shí)間

因?yàn)閿?shù)組里的數(shù)據(jù)類型是不確定的,所以用泛型比較好

public class MyList<E> { private int rongliang;//容量 private int zengliang;//增量 private int num;//數(shù)量 //定義一個(gè)原數(shù)組 //Object類包含所有的類型,所以定義數(shù)組是用Object類 private Object[] src; //三個(gè)不同的構(gòu)造方法 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中實(shí)現(xiàn)在數(shù)組中添加數(shù)據(jù),要考慮到數(shù)組中的數(shù)據(jù)數(shù)量小于數(shù)組長(zhǎng)度時(shí),可以直接在數(shù)組為null處添加數(shù)據(jù),但當(dāng)數(shù)組的數(shù)量大于等于數(shù)組長(zhǎng)度時(shí),要先重新定義一個(gè)數(shù)組,長(zhǎng)度是原數(shù)組加增量,然后再添加數(shù)據(jù)

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

取出指定下標(biāo)的數(shù)據(jù),因?yàn)閭魅氲氖窍聵?biāo)的參數(shù),所以要判斷數(shù)組的下標(biāo)是否越界,拋出異常

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

修改指定下標(biāo)的數(shù)據(jù),因?yàn)閭魅氲氖窍聵?biāo)的參數(shù),所以要判斷數(shù)組的下標(biāo)是否越界,拋出異常

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

刪除指定下標(biāo)的數(shù)據(jù),當(dāng)數(shù)組中null值的長(zhǎng)度大于等于增量時(shí),要將數(shù)組的容量減小,防止浪費(fèi)

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

將指定下標(biāo)處的數(shù)據(jù)改為指定的數(shù)據(jù)

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

最后在寫個(gè)獲取數(shù)組中數(shù)據(jù)的個(gè)數(shù),而不是數(shù)組的長(zhǎng)度

public int size(){ return num; }

寫個(gè)測(cè)試類,來(lái)測(cè)試這個(gè)長(zhǎng)度可變的數(shù)組是否可行

public class test { public static void main(String[] args) { //創(chuàng)建一個(gè)MyList對(duì)象 // 在創(chuàng)建對(duì)象時(shí)明確類型 MyList<String> list = new MyList<String>(); //添加數(shù)據(jù) 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'); //遍歷數(shù)組 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('數(shù)據(jù)個(gè)數(shù)為:'+n); System.out.println('**********************************************'); //修改指定位置的數(shù)據(jù) list.modify(1, 'QQ'); //遍歷數(shù)組 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('數(shù)據(jù)個(gè)數(shù)為:'+m); System.out.println('**********************************************'); //刪除指定位置的數(shù)據(jù) list.delete(2); //遍歷數(shù)組 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('數(shù)據(jù)個(gè)數(shù)為:'+k); System.out.println('**********************************************'); //在指定位置插入指定的數(shù)據(jù) list.insert(3, 'zr'); list.insert(3, 'qi'); //遍歷數(shù)組 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('數(shù)據(jù)個(gè)數(shù)為:'+h); System.out.println('**********************************************'); } }

最終數(shù)組的結(jié)果為:

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

補(bǔ)充:在Java中創(chuàng)建一個(gè)自定義長(zhǎng)度的數(shù)組并輸入每個(gè)元素

用到知識(shí)點(diǎn):數(shù)組、方法、Scanner、for循環(huán)。

作業(yè):

package Array;import java.util.Scanner;public class InputArray {public static void main(String[] args) {shuzu();//方法調(diào)用 } //方法定義 public static void shuzu() { //將輸入的數(shù)字作為數(shù)組的長(zhǎng)度 Scanner sz = new Scanner(System.in); System.out.println('請(qǐng)輸入數(shù)組長(zhǎng)度:');//提示可以操作 int[] cd = new int[sz.nextInt()];//數(shù)組初始化完成 System.out.println('當(dāng)前數(shù)組長(zhǎng)度定義為:'+cd.length);//再提示一下結(jié)果 //用for循環(huán)為每一個(gè)元素賦值 for (int i = 0; i < cd.length; i++) { int q = i+1;//這里q用作提示,避免提示出第0個(gè)元素。 System.out.println('請(qǐng)輸入第'+q+'個(gè)元素的值:'); cd [i] = sz.nextInt(); System.out.println('第'+q+'個(gè)元素定義為'+cd[i]+'。'); } sz.close(); //數(shù)組內(nèi)各元素已經(jīng)完成賦值,但是再用for循環(huán)遍歷一次 System.out.print('數(shù)組內(nèi)元素全部完成賦值:');//繼續(xù)提示一下 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;//方法結(jié)束,rentun; } }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美~级网站不卡| 欧美日韩国产观看视频| 精品国模一区二区三区| 成人精品高清在线视频| 国产乱码精品一区二区亚洲| 亚洲tv在线| 亚洲香蕉网站| 伊人久久亚洲影院| 免费人成网站在线观看欧美高清| 国产一区成人| 视频一区日韩精品| 蜜臀精品久久久久久蜜臀| 一本一本久久| 日本视频一区二区| 久久精品资源| 色爱av综合网| 亚洲一区二区三区高清不卡| 日本亚洲视频| 国产精品美女在线观看直播| 久久精品欧洲| 激情欧美丁香| 国产欧美日韩一级| 欧美激情三区| 国产高清一区二区| 日本伊人午夜精品| 精品免费视频| 日韩免费久久| 日韩欧美三区| 国产一区二区三区四区五区传媒| 中文字幕在线视频久| 悠悠资源网久久精品| 91九色综合| 高清av不卡| 免费的成人av| 福利一区二区免费视频| 亚洲免费观看| 欧美二三四区| 国产精品片aa在线观看| av亚洲在线观看| 国产一区国产二区国产三区 | 亚洲欧美久久久| 国产精品久久久久毛片大屁完整版| 久久久久中文| 国产精品mm| 亚洲一区二区三区高清| 国产aa精品| 日韩区欧美区| 国产v综合v| 久久精品理论片| 日本中文字幕不卡| 久久精品女人| 免费人成网站在线观看欧美高清| 国产精品chinese| 免费精品视频最新在线| 久久免费国产| 国产成人久久| av亚洲在线观看| 日韩国产在线一| 国产精品v日韩精品v欧美精品网站 | 蜜臀久久99精品久久久久宅男| 日欧美一区二区| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 亚洲激情婷婷| 久久国产日韩欧美精品| 国产精品99一区二区三区| 99国产精品| 国产成人精品一区二区三区在线| 国产精品人人爽人人做我的可爱| 久久国内精品| 日本欧美不卡| 日本不卡的三区四区五区| 国产成人免费| 午夜影院欧美| 国产美女撒尿一区二区| 欧美一区=区| 日韩一区二区三区免费播放| 日韩精品免费视频人成 | 岛国av在线网站| 日韩一区二区免费看| 丝袜诱惑一区二区| 久久国际精品| 亚洲午夜久久久久久尤物| 国产精品115| 六月婷婷一区| 欧洲在线一区| 日韩免费看片| 久久亚洲人体| 欧美亚洲一级| 日韩精品一卡二卡三卡四卡无卡| 日韩中文欧美| 日韩av有码| 久久成人福利| 日韩不卡一区二区三区| 亚洲一区欧美激情| 国产+成+人+亚洲欧洲在线| 亚洲精品日韩久久| 日韩欧美一区二区三区免费观看| 中文字幕一区久| 精品久久99| 欧美亚洲三级| 国产亚洲欧美日韩在线观看一区二区| 男女男精品视频网| 在线观看免费一区二区| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 麻豆精品久久| 热久久久久久| 亚洲精品乱码| 亚洲免费成人av在线| 日韩在线卡一卡二| 99香蕉国产精品偷在线观看 | 午夜亚洲福利| 亚洲精品美女91| 视频在线在亚洲| 欧美日韩视频| 日本蜜桃在线观看视频| 国产一区2区| 日韩在线精品| 国产亚洲一区二区手机在线观看 | 日韩福利在线观看| 日本综合精品一区| 国产精品tv| 日韩电影免费网址| 国产精品蜜芽在线观看| 在线日韩av| 日韩午夜免费| 国产亚洲精品美女久久久久久久久久| 日韩高清不卡一区二区| 久久a爱视频| 成人在线免费观看网站| 国产精品亚洲人成在99www| 久久国产生活片100| 国产精品黄色| 亚洲午夜天堂| 国产女优一区| 亚洲精品影视| 日本91福利区| 国产一区二区三区亚洲| 一本色道久久精品| 免费日韩成人| 久久一区二区三区喷水| 免费观看在线综合色| 久久久久观看| 中文国产一区| 欧美日韩18| 国产精选在线| 国产一级一区二区| 国产aⅴ精品一区二区三区久久 | 日韩国产91| 久久91导航| 午夜久久tv| 国产精品多人| 另类激情亚洲| 欧美韩一区二区| 黄色国产精品| 国产视频网站一区二区三区| 国产一区二区三区不卡视频网站 | 国产日韩高清一区二区三区在线| 久久99免费视频| 欧美网站在线| 国产91欧美| 日韩精品导航| 欧美午夜不卡| 日韩毛片视频| 欧美一区网站| 麻豆成人在线| 神马午夜久久| 精品三级av在线导航| 日本欧美韩国一区三区| 国产精品蜜芽在线观看| 欧美日韩午夜| 久久99伊人| 成人午夜网址| 日韩黄色免费网站| 欧美日韩国产在线一区| 欧美a在线观看| 国产九一精品| 在线看片一区| 日韩一区二区三区免费播放| 国产欧美日韩| 欧美一区精品| 青草国产精品久久久久久| 亚洲一区区二区| 蜜桃视频在线网站| 日本午夜免费一区二区 | 久久亚洲精品伦理| 91成人精品视频| 日韩av有码| 日韩国产高清在线| 亚洲精品影视| 精品1区2区3区4区| 国产99久久| 欧美日韩国产亚洲一区| 欧美日韩色图| 999久久久91| 欧美aa在线观看| 久久国产免费| 欧美在线亚洲综合一区| 黄色av一区| 欧美日韩四区| 亚洲精选成人|