一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java 實現數組擴容與縮容案例

java 實現數組擴容與縮容案例

2021-08-03 11:13Code,BetterCode Java教程

這篇文章主要介紹了java 實現數組擴容與縮容案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

?
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);
 }
}

輸出結果

java 實現數組擴容與縮容案例

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://blog.csdn.net/qq_42043982/article/details/91490690

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: bban女同系列022在线观看 | 欧美在线一级片 | 国自产在线精品免费 | 无人区乱码1区2区3区网站 | 秋葵视频成人 | 欧美影院一区二区三区 | 91麻豆精品国产91久久久 | 草莓永久地域网名入2022 | 国产一区二区在线免费观看 | 成人国产在线视频在线观看 | 毛片区| 国产亚洲欧美日韩俺去了 | 精品一久久香蕉国产线看播放 | gaychinese男男2022| 疯狂伦交1一6 小说 风间由美在线 | 国产精品久久久久久久午夜片 | 女女性恋爱视频入口 | 多人群p全肉小说 | 99re在线视频观看 | 国产精品露脸国语对白手机视频 | 男人含玉势出嫁束器 | 国内精品视频一区二区三区八戒 | 日韩成人精品在线 | 国产福利一区二区精品视频 | 性欧美xxxxx老太婆 | 日本韩国推理片免费观看网站 | 日韩精品欧美激情国产一区 | 亚洲精品一区制服丝袜 | 被夫上司强迫中文 | 精品性影院一区二区三区内射 | 久久久影院亚洲精品 | 男人与禽交的方法 | 日韩欧美一区二区三区视频 | 麻豆视频免费在线播放 | 免费视频专区一国产盗摄 | 国产麻豆精品入口在线观看 | 欧美日韩一区视频 | 欧美人与日本人xx在线视频 | 日韩av线观看 | 精品日韩一区二区三区 | 亚洲欧美自偷自拍另类小说 |