[20-05-01][Self-test 30]Java MyArray

  1 package test_6_4;
  2 
  3 public class MyArray {
  4 
  5     /**
  6      * 封装一个动态数组类,可以根据用户传递的数据,动态的对数组的长度进行扩展;
  7      * 方法有:
  8      * 扩展数组
  9      * 追加一个值
 10      * 根据索引,获得元素的值
 11      * 根据索引,删除一个值
 12      * 根据索引,修改一个值
 13      * 在指定位置插入一个值
 14      * 获得动态数组中元素的个数
 15      */
 16     
 17     public int[] array = new int[0];
 18     
 19     /**
 20      * 扩展数组
 21      */
 22     public void extend() {
 23         
 24         int[] newArray = new int[array.length + 1];
 25         
 26         for (int i = 0; i < array.length; i++) {
 27             newArray[i] = array[i];
 28         }
 29         
 30         array = newArray;
 31     }
 32     
 33     /**
 34      * 缩短数组
 35      */
 36     public void cut() {
 37         
 38         int[] newArray = new int[array.length - 1];
 39         
 40         for (int i = 0; i < array.length - 1; i++) {
 41             newArray[i] = array[i];
 42         }
 43         
 44         array = newArray;
 45         
 46     }
 47     
 48     /**
 49      * 追加
 50      * 
 51      * @param num 要追加的值
 52      */
 53     public void add(int value) {
 54         
 55         extend();
 56         
 57         array[array.length - 1] = value;
 58     }
 59     
 60     
 61     /**
 62      * 获取
 63      * 
 64      * @param 索引
 65      * @return 获取值
 66      */
 67     public int get(int index) {
 68         
 69         int value = array[index];
 70         
 71         return value;
 72     }
 73     
 74     /**
 75      * 删除
 76      * 
 77      * @param 索引
 78      */
 79     public void del(int index) {
 80         
 81         for (int i = index; i < array.length - 1; i++) {
 82             array[i] = array[i + 1];
 83         }
 84         
 85         cut();
 86     }
 87     
 88     /**
 89      * 修改
 90      * 
 91      * @param index 索引
 92      * @param value 修改值
 93      */
 94     public void set(int index, int value) {
 95         
 96         array[index] = value;
 97         
 98     }
 99     
100     /**
101      * 插入
102      * 
103      * @param index 索引
104      * @param value 值
105      */
106     public void insert(int index, int value) {
107         
108         extend();
109         
110         for (int i = array.length - 1; i > index; i--) {
111             array[i] = array[i - 1];
112         }
113         
114         
115         array[index] = value;
116         
117     }
118     
119     /**
120      * 获取长度
121      */
122     public int getLength() {
123         
124         return array.length;
125     }
126     
127     /**
128      * 打印
129      */
130     public void print() {
131         
132         for (int i = 0; i < array.length; i++) {
133             System.out.print(array[i] + " ");
134             
135         }
136     }
137     
138 }
 1 package test_6_4;
 2 
 3 public class Test {
 4 
 5     public static void main(String[] args) {
 6 
 7         MyArray arr = new MyArray();
 8         
 9         arr.print();
10         
11         arr.add(1);
12         arr.add(2);
13         arr.add(3);
14         arr.print();
15         System.out.println("数组长度为" + arr.getLength());
16         
17         System.out.println("---");
18         
19         arr.del(0);
20         arr.print();
21         System.out.println("数组长度为" + arr.getLength());
22         
23         System.out.println("---");
24         
25         System.out.println("索引1处的值为" + arr.get(1));
26         
27         arr.insert(1, 99);
28         arr.print();
29         System.out.println("数组长度为" + arr.getLength());
30         
31         System.out.println("---");        
32         
33     }
34 
35 }

结果如下:

1 2 3 数组长度为3
---
2 3 数组长度为2
---
索引1处的值为3
2 99 3 数组长度为3
---
数组长度为3

猜你喜欢

转载自www.cnblogs.com/mirai3usi9/p/12813530.html