我就废话不多说了,大家还是直接看代码吧~
?
1
2
3
4
5
6
|
public static <T> T[] dilatationArray(T[] datas, int newlen) {
|
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
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<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) {
//不能为负数
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实现一个栈(通过自定义数组实现,可以自动扩容)
先声明接口interface Stack<E>
?
1
2
3
4
5
6
7
8
9
10
11
|
/**
* @author yinglongwu
*/
//适用泛型
public interface Stack<E> {
int getSize();
boolean isEmpty();
void push(E e); //入栈
E pop(); //出栈
E peek(); //查看栈顶元素
}
|
class ArrayStack<E>实现接口
这里是通过自定义的Array类里的方法来实现Stack接口,进而形成这个ArrayStack类
自定义的Array类:点我跳转
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/**
* @author yinglongwu
*/
//这里通过自定义的Array类里的方法实现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栈
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/**
* @author yinglongwu
*/
public class Main {
public static void main(String[] args) {
//测试class ArrayStack
ArrayStack<Integer> stack = new ArrayStack<Integer>(); //new ArrayStack<Integer>()里的Integer可写可不写
//包装类和其对应的基本数据类型可以自动转换
//将0到4入栈
for ( int i = 0 ; i < 5 ; i++) {
stack.push(i);
System.out.println(stack);
}
//出一次栈
stack.pop();
System.out.println(stack);
}
}
|
输出结果
以上为个人经验,希望能给大家一个参考,也希望大家多多支持快网idc。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/qq_42043982/article/details/91490690
相关文章
猜你喜欢
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-06-04 30
-
Java8新特性之精简的JRE详解_动力节点Java学院整理
2025-05-29 44 -
java JDBC系列教程之JDBC类的简析与JDBC的基础操作
2025-05-29 49 -
2025-05-29 90
-
2025-05-25 27
热门评论