java 實現(xiàn)數(shù)組擴容與縮容案例
我就廢話不多說了,大家還是直接看代碼吧~
public static <T> T[] dilatationArray(T[] datas,int newlen) { //不能為負(fù)數(shù) newlen = newlen<0?0:newlen; //生成一個新數(shù)組,并copy原值到新數(shù)組 return Arrays.copyOf(datas, newlen); }
package testpro; import java.util.Arrays; /** * 數(shù)組擴容縮容 * 擴容之后擴容部分按照類型默認(rèn)賦值為0,false或者null * @author Administrator * */ public class ArrayDilatation { public static void main(String[] args) { Student[] students = new Student[60]; for (int i=0;i<students.length;i++) { System.out.println(students[i]); students[i] = new Student("Stu"+i,"Gen"+i,i); System.out.println(students[i]); } System.out.println(students); students = dilatationArray(students, 60); for (Student student : students) { System.out.println(student); } System.out.println(students); } public static <T> T[] dilatationArray(T[] datas,int newlen) { //不能為負(fù)數(shù) newlen = newlen<0?0:newlen; //生成一個新數(shù)組,并copy原值到新數(shù)組 return Arrays.copyOf(datas, newlen); } } class Student{ private String name; private String gender; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Student(String name, String gender, int age) { super(); this.name = name; this.gender = gender; this.age = age; } @Override public String toString() { return "Student [name=" + name + ", gender=" + gender + ", age=" + age + "]"; } }
補充:Java實現(xiàn)一個棧(通過自定義數(shù)組實現(xiàn),可以自動擴容)
Java實現(xiàn)一個棧(可以自動擴容)
先聲明接口interface Stack<E>
/** * @author yinglongwu */ //適用泛型 public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e);//入棧 E pop();//出棧 E peek();//查看棧頂元素 }
class ArrayStack<E>實現(xiàn)接口
這里是通過自定義的Array類里的方法來實現(xiàn)Stack接口,進而形成這個ArrayStack類
自定義的Array類:點我跳轉(zhuǎn)
/** * @author yinglongwu */ //這里通過自定義的Array類里的方法實現(xiàn)Stack接口,進而形成這個ArrayStack, //并且也可以自動擴容 public class ArrayStack<E> implements Stack<E> { //這個Array<E>是自己封裝的 Array<E> array; //有參構(gòu)造 public ArrayStack(int capacity) { array = new Array<>(capacity); } //無參構(gòu)造 public ArrayStack() { array = new Array<>();//使用Array類里的無參構(gòu)造 } //獲取棧的最大容量 public int getCapacity() { return array.getCapacity();//調(diào)用的方法也是自己封裝的Array類里的方法 } //對接口中的方法進行重寫 @Override public int getSize() { return array.getSize(); } @Override public boolean isEmpty() { return array.isEmpty(); } //入棧 @Override public void push(E e) { array.addLast(e); } //出棧 @Override public E pop() { return array.removeLast(); } //查看棧頂元素 @Override public E peek() { return array.getLast(); } //對toString方法進行重寫,方便輸出棧的基本信息 @Override public String toString() { StringBuilder res = new StringBuilder(); res.append("Stack: "); res.append('['); for (int i = 0; i < array.getSize(); i++) { res.append(array.get(i)); if (i != array.getSize()-1) { res.append(", "); } } res.append("] top");//表明右側(cè)是棧頂 return res.toString(); } }
測試使用這個ArrayStack棧
/** * @author yinglongwu */ public class Main { public static void main(String[] args) { //測試class ArrayStack ArrayStack<Integer> stack = new ArrayStack<Integer>();//new ArrayStack<Integer>()里的Integer可寫可不寫 //包裝類和其對應(yīng)的基本數(shù)據(jù)類型可以自動轉(zhuǎn)換 //將0到4入棧 for (int i = 0; i < 5; i++) { stack.push(i); System.out.println(stack); } //出一次棧 stack.pop(); System.out.println(stack); } }
輸出結(jié)果
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
java動態(tài)代理和cglib動態(tài)代理示例分享
這篇文章主要介紹了java動態(tài)代理和cglib動態(tài)代理示例,JDK1.3之后,Java提供了動態(tài)代理的技術(shù),允許開發(fā)者在運行期間創(chuàng)建接口的代理實例,下面我們使用示例學(xué)習(xí)一下2014-03-03IDEA報錯:Unable to save settings Failed to save settings
這篇文章主要介紹了IDEA報錯:Unable to save settings Failed to save settings的相關(guān)知識,本文給大家分享問題原因及解決方案,需要的朋友可以參考下2020-09-09Java泛型機制與反射原理相關(guān)知識總結(jié)
今天帶大家學(xué)習(xí)的是關(guān)于Java進階的相關(guān)知識,文章圍繞著Java泛型機制與反射原理展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06java基于Apache FTP點斷續(xù)傳的文件上傳和下載
本篇文章主要介紹了java基于Apache FTP點斷續(xù)傳的文件上傳和下載,利用FTP實現(xiàn)文件的上傳和下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-11-11Java異常簡介和架構(gòu)_動力節(jié)點Java學(xué)院整理
這篇文章主要分享了Java異常簡介和架構(gòu),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06java selenium教程環(huán)境搭建基于Maven
本文主要介紹Java selenium 環(huán)境的安裝,這里介紹了基于Maven的環(huán)境搭建,有需要的小伙伴可以參考下2016-08-08