数组扩容 java_java 实现数组扩容与缩容案例
我就廢話不多說了,大家還是直接看代碼吧~
public static T[] dilatationArray(T[] datas,int newlen) {
//不能為負數
newlen = newlen<0?0:newlen;
//生成一個新數組,并copy原值到新數組
return Arrays.copyOf(datas, newlen);
}
package testpro;
import java.util.Arrays;
/**
* 數組擴容縮容
* 擴容之后擴容部分按照類型默認賦值為0,false或者null
* @author Administrator
*
*/
public class ArrayDilatation {
public static void main(String[] args) {
Student[] students = new Student[60];
for (int i=0;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[] dilatationArray(T[] datas,int newlen) {
//不能為負數
newlen = newlen<0?0:newlen;
//生成一個新數組,并copy原值到新數組
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實現一個棧(通過自定義數組實現,可以自動擴容)
Java實現一個棧(可以自動擴容)
先聲明接口interface Stack
/**
* @author yinglongwu
*/
//適用泛型
public interface Stack {
int getSize();
boolean isEmpty();
void push(E e);//入棧
E pop();//出棧
E peek();//查看棧頂元素
}
class ArrayStack實現接口
這里是通過自定義的Array類里的方法來實現Stack接口,進而形成這個ArrayStack類
自定義的Array類:點我跳轉
/**
* @author yinglongwu
*/
//這里通過自定義的Array類里的方法實現Stack接口,進而形成這個ArrayStack,
//并且也可以自動擴容
public class ArrayStack implements Stack {
//這個Array是自己封裝的
Array 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 stack = new ArrayStack();//new ArrayStack()里的Integer可寫可不寫
//包裝類和其對應的基本數據類型可以自動轉換
//將0到4入棧
for (int i = 0; i < 5; i++) {
stack.push(i);
System.out.println(stack);
}
//出一次棧
stack.pop();
System.out.println(stack);
}
}
輸出結果
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持聚米學院。如有錯誤或未考慮完全的地方,望不吝賜教。
總結
以上是生活随笔為你收集整理的数组扩容 java_java 实现数组扩容与缩容案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斗罗大陆魂师对决焱阵容怎么搭配?
- 下一篇: python迷宫问题求最短路径_用栈求解