为什么枚举要实现接口?
285
2022-11-04
java 实现数组扩容与缩容案例
我就废话不多说了,大家还是直接看代码吧~
public static
//不能为负数
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 //不能为负数 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 //这个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 //包装类和其对应的基本数据类型可以自动转换 //将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
//不能为负数
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
//这个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
//包装类和其对应的基本数据类型可以自动转换
//将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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~