java 实现数组扩容与缩容案例

网友投稿 285 2022-11-04


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) {

Shttp://tudent[] 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<E> {

//这个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.getSizhttp://e()-1) {

res.append(", ");

}

}

res.appeJzDmcNdIJQnd("] 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);

}

}

输出结果

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<E> {

//这个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.getSizhttp://e()-1) {

res.append(", ");

}

}

res.appeJzDmcNdIJQnd("] 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);

}

}

输出结果


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:局域网内台式机使用笔记本作代理服务器上网
下一篇:(0基础学Linux系列)2.16 Linux启动过程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~