我就廢話不多說了,大家還是直接看代碼吧~
1
2
3
4
5
6
|
public static <T> T[] dilatationArray(T[] datas, int newlen) { //不能為負數 newlen = newlen< 0 ? 0 :newlen; //生成一個新數組,并copy原值到新數組 return Arrays.copyOf(datas, 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實現一個棧(通過自定義數組實現,可以自動擴容)
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); } } |
輸出結果
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。
原文鏈接:https://blog.csdn.net/qq_42043982/article/details/91490690