自定义Vector

 1 public class Demo {
 2     public static void main(String[] args) {
 3         MyVector vector = new MyVector();
 4         vector.add("123");
 5         vector.add("abc");
 6         vector.add("中国人");
 7         System.out.println("元素个数为:" + vector.size());
 8         for (int i = 0; i < vector.size(); i++) {
 9             System.out.println(vector.get(i));
10         }
11     }
12 }
13 class MyVector {
14     // 火车头
15     private Cell head;
16     // 添加元素的方法
17     public void add(String data) {
18         // 1.创建车厢存放数据
19         Cell cell = new Cell(data);
20         // 2.查找尾车厢
21         Cell tail = getTail();
22         // 3.完成挂接
23         // 如果查找到的尾车厢为null,则证明没有车厢,所以创建的车厢即为头车厢
24         if (tail == null) {
25             head = cell;
26         } else {// 将创建的车厢的引用赋值给尾车厢的下一节车厢的引用
27             tail.next = cell;
28         }
29     }
30     // 查找尾车厢的方法
31     private Cell getTail() {
32         // 如果没有头车厢,则返回null
33         if (head == null) {
34             return null;
35         }
36         // 创建一个临时变量,用来存储头车厢的引用来完成尾车厢的查找
37         Cell p = head;
38         // 死循环进行查找,因为不知道到底有多少节车厢
39         while (true) {
40             // 如果车厢的下一节车厢为null,则表示找到了最后一节车厢,跳出循环
41             if (p.next == null) {
42                 break;
43             }
44             // 将下一节车厢的引用赋值给临时变量
45             p = p.next;
46         }
47         // 返回尾车厢的引用
48         return p;
49     }
50     // 计算车厢个数的方法
51     public int size() {
52         // 存储车厢的个数
53         int size = 0;
54         // 创建一个临时变量,用来存储头车厢的引用来完成尾车厢的查找
55         Cell p = head;
56         // 死循环进行查找,因为不知道到底有多少节车厢
57         while (true) {
58             // 如果车厢为null,则跳出循环
59             if (p == null) {
60                 break;
61             }
62             // 将下一节车厢的引用赋值给临时变量
63             p = p.next;
64             // 车厢个数自增
65             size++;
66         }
67         // 返回车厢的个数
68         return size;
69     }
70     // 获取元素的方法
71     public String get(int index) {
72         // 如果下标大于或等于数组的长度,则抛异常
73         if (index >= size()) {
74             throw new IndexOutOfBoundsException("下标越界");
75         } else {
76             // 创建一个临时变量,用来存储头车厢的引用来完成尾车厢的查找
77             Cell p = head;
78             // 循环遍历
79             for (int i = 0; i < index; i++) {
80                 // 将下一节车厢的引用赋值给临时变量
81                 p = p.next;
82             }
83             // 返回找到车厢的数据
84             return p.data;
85         }
86     }
87     // 车厢
88     class Cell {
89         // 数据
90         private String data;
91         // 下一节车厢
92         private Cell next;
93         // 构造方法进行赋值
94         public Cell(String data) {
95             this.data = data;
96         }
97     }
98 }

  执行结果:

1 元素个数为:3
2 123
3 abc
4 中国人
原文地址:https://www.cnblogs.com/void0720/p/4778081.html