java 實現(xiàn)數(shù)組擴容與縮容案例
更新時間:2021年02月04日 08:47:41 作者:Code,BetterCode
這篇文章主要介紹了java 實現(xiàn)數(shù)組擴容與縮容案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
我就廢話不多說了,大家還是直接看代碼吧~
public static <T> T[] dilatationArray(T[] datas,int newlen) {
//不能為負數(shù)
newlen = newlen<0?0:newlen;
//生成一個新數(shù)組,并copy原值到新數(shù)組
return Arrays.copyOf(datas, newlen);
}
package testpro;
import java.util.Arrays;
/**
* 數(shù)組擴容縮容
* 擴容之后擴容部分按照類型默認賦值為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) {
//不能為負數(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類:點我跳轉
/**
* @author yinglongwu
*/
//這里通過自定義的Array類里的方法實現(xiàn)Stack接口,進而形成這個ArrayStack,
//并且也可以自動擴容
public class ArrayStack<E> implements Stack<E> {
//這個Array<E>是自己封裝的
Array<E> array;
//有參構造
public ArrayStack(int capacity) {
array = new Array<>(capacity);
}
//無參構造
public ArrayStack() {
array = new Array<>();//使用Array類里的無參構造
}
//獲取棧的最大容量
public int getCapacity() {
return array.getCapacity();//調用的方法也是自己封裝的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");//表明右側是棧頂
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可寫可不寫
//包裝類和其對應的基本數(shù)據(jù)類型可以自動轉換
//將0到4入棧
for (int i = 0; i < 5; i++) {
stack.push(i);
System.out.println(stack);
}
//出一次棧
stack.pop();
System.out.println(stack);
}
}
輸出結果

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
java動態(tài)代理和cglib動態(tài)代理示例分享
這篇文章主要介紹了java動態(tài)代理和cglib動態(tài)代理示例,JDK1.3之后,Java提供了動態(tài)代理的技術,允許開發(fā)者在運行期間創(chuàng)建接口的代理實例,下面我們使用示例學習一下2014-03-03
IDEA報錯:Unable to save settings Failed to save settings
這篇文章主要介紹了IDEA報錯:Unable to save settings Failed to save settings的相關知識,本文給大家分享問題原因及解決方案,需要的朋友可以參考下2020-09-09
java基于Apache FTP點斷續(xù)傳的文件上傳和下載
本篇文章主要介紹了java基于Apache FTP點斷續(xù)傳的文件上傳和下載,利用FTP實現(xiàn)文件的上傳和下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-11-11
java selenium教程環(huán)境搭建基于Maven
本文主要介紹Java selenium 環(huán)境的安裝,這里介紹了基于Maven的環(huán)境搭建,有需要的小伙伴可以參考下2016-08-08

