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

2025-05-29 0 73

我就废话不多说了,大家还是直接看代码吧~

?

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 实现数组扩容与缩容案例

以上为个人经验,希望能给大家一个参考,也希望大家多多支持快网idc。如有错误或未考虑完全的地方,望不吝赐教。

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 java 实现数组扩容与缩容案例 https://www.kuaiidc.com/108727.html

相关文章

发表评论
暂无评论