日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java数据结构-基于数组的栈和泛型

發(fā)布時(shí)間:2023/12/19 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java数据结构-基于数组的栈和泛型 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

泛型可以參數(shù)化變量的類型

當(dāng)你需要用不同類型的基本類型變量來(lái)調(diào)用構(gòu)造方法時(shí)你需要泛型

public class Test {public static void main(String[] args) {A a=new A("a");System.out.println(a.e);A a1=new A(10);System.out.println(a1.e);} } class A<E>{E e;public A(E e){this.e=e;}public E getE(){return e;}}

輸出結(jié)果:

a 10

如果不滿意 你可以使用兩個(gè)泛型 你甚至可以使用一個(gè)數(shù)組或者自定義的類

/*** Created by root on 16-2-23.*/ public class Test {public static void main(String[] args) {A a=new A("a");System.out.println(a.e);a.setT(new int[]{1,2,3});//你可以在這里賦給t一個(gè)數(shù)組或者以個(gè)自定義類A a1=new A();a1.setT(new B());//賦給a2的成員t一個(gè)B類對(duì)象} } class A<E,T>{E e;T t;public A(){}public A(E e){this.e=e;}public E getE(){return e;}public void setT(T t){this.t=t;}public T getT(){return t;}} class B{int b=10; }

debug結(jié)果

有時(shí)你需要對(duì)泛型作出一些約束以免發(fā)生錯(cuò)誤溢出

public class Test {public static void main(String[] args) {A<String,String> a=new A();//對(duì)泛型作出一些約束 讓它只能接受String類型A a2=new A<String,String>();//同樣的約束 但是要約束的參數(shù)要緊跟類名a.setT("a");//正確的方法//a.setT(10); 出現(xiàn)報(bào)錯(cuò)} } class A<E,T>{E e;T t;public A(){}public A(E e){this.e=e;}public E getE(){return e;}public void setT(T t){this.t=t;}public T getT(){return t;}} class B{int b=10; }

雖然java不能直接聲明泛型數(shù)組 但是可以利用泛型自己寫一個(gè)泛型數(shù)組類

public class ArrayType<T> {private int index;private int length;T[] data;private T el;public ArrayType(int length){//根據(jù)長(zhǎng)度初始化數(shù)組this.length=length;data=(T[])(new Object[length]);}public void setEl(int thatIndex,Object el){//根據(jù)索引賦值 變量的類型可以使任意的if(thatIndex<length){data[thatIndex]=(T)el;}}public T getEl(int thatIndex){//根據(jù)索引獲取元素的值if(thatIndex<length){return data[thatIndex];}else {return data[0];}} }

test class

public class Test {public static void main(String[] args){ArrayType a=new ArrayType(3);a.setEl(0,23);a.setEl(1,"dd");a.setEl(2,true);} }

debug結(jié)果:

加入一些變長(zhǎng)的功能

public class ArrayType<T> {private int index;private int length;T[] data;private T el;public ArrayType(int length){this.length=length;data=(T[])(new Object[length]);}public void setEl(int thatIndex,Object el){if(thatIndex<length){data[thatIndex]=(T)el;}else {stretch(thatIndex+1);//如果數(shù)組越界 執(zhí)行復(fù)制data[thatIndex]=(T)el;}}public T getEl(int thatIndex){if(thatIndex<length){return data[thatIndex];}else {stretch(thatIndex+1);//如果數(shù)組越界 執(zhí)行賦值 并返回nullreturn data[thatIndex];}}protected void stretch(int thatLength){T[] newdata=(T[])(new Object[thatLength]);//定義一個(gè)thatLength的數(shù)組for(int i=0;i<this.length;i++){ //把data內(nèi)所有元素復(fù)制到data里newdata[i]=data[i]; //}data=newdata;} }

有了以上基礎(chǔ) 可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的數(shù)組棧

public interface Stack<E> {public boolean isEmpty();public E peek();public E pop();public void push(E target); } import java.util.EmptyStackException; import java.util.Objects;/*** Created by root on 16-2-24.*/ public class ArrayStack<E> implements Stack {//實(shí)現(xiàn)棧的interfaceprivate E[] data; //可以獲得數(shù)組長(zhǎng)度private int size; //用于判斷棧頂?shù)乃饕齪ublic ArrayStack(){data=(E[])(new Object[1]);//初始化的棧具有一個(gè)null類型 size的值為0 size-1是棧頂?shù)乃饕齭ize=0; }public boolean isEmpty(){return size==0; //判斷棧是否為空 }public Object pop(){if (isEmpty()){throw new EmptyStackException();//如果棧為空 那就報(bào)錯(cuò)}size--; //如果棧不為空 return data[size]; //彈出棧頂}public Object peek(){if(isEmpty()){throw new EmptyStackException();//如果棧為空 報(bào)錯(cuò)}return data[size-1];//返回棧頂}protected boolean isFull(){//棧滿了?return size ==data.length;}public void push(Object target){if (isFull()){//如果棧滿了 執(zhí)行擴(kuò)棧stretch();}data[size]= (E) target;//如果棧沒(méi)有滿 把target壓入棧頂size++;}protected void stretch(){//將原數(shù)組的長(zhǎng)度擴(kuò)大兩倍 擴(kuò)大棧的長(zhǎng)度E[] newData=(E[])(new Object[data.length*2]);for(int i=0;i<data.length;i++){newData[i]=data[i];}data=newData;} }

轉(zhuǎn)載于:https://www.cnblogs.com/Salaku/p/5208728.html

總結(jié)

以上是生活随笔為你收集整理的Java数据结构-基于数组的栈和泛型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区网站 | 亚洲熟女乱综合一区二区 | 欧洲性猛交| 日本激情久久 | 精品欧美一区二区三区 | 欧美色图首页 | 亚洲国产成人精品一区二区三区 | 黄网站在线播放 | 男女无遮挡做爰猛烈视频 | 黄a网站| 超碰公开在线观看 | 欧洲日韩一区二区三区 | 国产91色在线 | 爆乳熟妇一区二区三区 | 国产乱国产乱 | 国产精品一区二区免费视频 | 黄色av影院 | 亚洲午夜一区 | 青青草久久 | 日韩熟女精品一区二区三区 | 国产曰肥老太婆无遮挡 | 三级4级全黄60分钟 成人自拍视频 | 神马久久久久久久久 | xxxx 国产 | 国产精品一区二区入口九绯色 | 国产成人精品亚洲日本在线观看 | 韩国精品一区二区 | 动漫av一区二区 | 久久永久免费 | 亚洲麻豆精品 | 国产福利91精品一区二区三区 | 999久久久久久 | 日韩av高清在线观看 | 欧美一区二区三区成人 | 懂色一区二区三区免费观看 | 中文久草 | 亚洲av乱码一区二区 | 精品人妻一区二区三区久久 | 亚洲国产成人va在线观看天堂 | 亚洲啊啊 | 91亚洲国产| 3d动漫啪啪精品一区二区中文字幕 | 久久538| 亚洲视频一 | 精品国产亚洲一区二区麻豆 | 伊人国产女 | 九九热视频精品在线观看 | 性一交一乱一色一视频麻豆 | 好吊一区二区三区视频 | 国产一区一一区高清不卡 | 污污污www精品国产网站 | 中文字幕一区在线观看 | 91亚洲视频在线观看 | 国产特黄一级片 | 夜夜操狠狠操 | 少妇做爰免费理伦电影 | 五月婷婷婷 | 欧美性受xxx黑人xyx性爽 | 日韩草逼 | 亚欧av在线 | 99小视频| 国产98色在线 | 日韩 | 欧美日韩精品在线观看 | 26uuu成人网 国产精品久久久久久久久久直播 | 污黄网站在线观看 | 久久国产精品久久精品国产 | 无码人妻少妇色欲av一区二区 | 亚洲午夜在线播放 | 亚洲三区视频 | 成人国产片 | 黄视频免费看在线 | 欧美一区二区视频在线 | 日韩av导航| 97超碰网| 国产精品无码一区二区三区免费 | 国产黄色高清视频 | 日韩成人一区二区三区 | 亚洲制服一区二区 | 欧美碰碰碰| 一本大道伊人av久久综合 | 五月天天色 | 成人午夜免费网站 | 日韩精品高清视频 | 调教91| 亚洲妇熟xx妇色黄蜜桃 | 四虎精品在永久在线观看 | 欧美激情影音先锋 | 91免费观看入口 | 久久亚洲AV成人无码国产野外 | caoprom在线视频 | 日韩精品视频一区二区 | 靠逼在线观看 | eeuss日韩 | 精品国产99一区二区乱码综合 | 日日摸夜夜 | 亚洲欧美一区二区三 | 色天天天| 99热这里只有精品7 青青草社区 | 日日网站 |