自己实现动态数组:
- 实现一个大小固定的有序数组,支持动态增删改操作
- 实现一个支持动态扩容的泛型数组
大小固定的有序数组,支持动态增删改操作
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
67
68
69
70
71
72
73
74
75
76/**
* @description: 实现一个大小国定的有序数组,支持动态增删改操作。
* 1)数组的插入、删除、按照下标随机访问操作;
* 2)数组中的数据是int类型的。
* @author: rhsphere
* @since: 2019-05-27 10:21 by jdk 1.8
*/
public class Array {
//定义整型数据data保存数据
public int data[];
//定义数组长度
private int n;
//定义实际中的个数
private int count;
//构造方法,定义数组大小
public Array(int capacity) {
this.data = new int[capacity];
this.n = capacity;
this.count = 0; //初始化后没有存数
}
//根据索引找到数据中的元素并返回
public int find(int index) {
if (index < 0 || index >= count)
return -1;
return data[index];
}
//插入元素,尾部插入
public boolean insert(int index, int value) {
// 数组空间已满
if (count == n) {
System.out.println("没有可插入的位置");
return false;
}
// 如果count还没满,那么就可以插入数据到数组中
// 位置不合法
if (index < 0 || index > count) {
System.out.println("位置不合法");
return false;
}
//位置合法
for (int i = count; i > index; --i) {
data[i] = data[i - 1];
}
data[index] = value;
++count;
return true;
}
//根据索引,删除数组中元素
public boolean delete(int index) {
if (index < 0 || index >= count)
return false;
//从删除位置开始,将后面的元素向前移动一位
for (int i = index + 1; i < count; i++) {
data[i - 1] = data[i];
}
count--;
return true;
}
public void printAll() {
for (int i = 0; i < count; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
Array arr = new Array(5);
arr.printAll();
arr.insert(0, 3);
arr.insert(0, 4);
arr.insert(1, 5);
arr.insert(3, 9);
arr.insert(3, 10);
arr.printAll();
}
}
支持动态扩容的泛型数组
1 | /** |