-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathListExample.java
More file actions
156 lines (136 loc) · 4.86 KB
/
ListExample.java
File metadata and controls
156 lines (136 loc) · 4.86 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package example.JavaCollectionExample;
import java.util.*;
/**
* List 範例
* - 搭配 iterable
* - 搭配 iterator
*
* ----------
* | List |
* ----------
* ^ ^
* implements | | implements
* / \
* / \
* ---------- -----------
* |ArrayList | |LinkedList |
* ---------- -----------
*
*
* Reference:
* - https://beginnersbook.com/java-collections-tutorials/
* - https://beginnersbook.com/2013/12/java-arraylist/
* - https://ithelp.ithome.com.tw/articles/10216257
* - https://iter01.com/550657.html
*/
public class ListExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("TW");
list.add("US");
list.add("HK");
//! 使用foreach物件來歷遍arraylist
for (String obj:list) {
System.out.println(obj);
}
//! 使用iterator物件來歷遍arraylist
Iterator<String> itr = list.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
// FirstList example.
FirstList firstList = new FirstList();
firstList.createListArray();
firstList.createLinkedListByList();
firstList.createLinkedList();
firstList.createList();
// TODO: ArrayList, LinkedList 各自適合使用情境
}
public void forEachArrayList(ArrayList<String> list) {
// using forEach to print the arraylist.
for (String element : list) {
System.out.println(element);
}
}
public void usingIteratorArrayList(ArrayList<String> list) {
// using Iterator class to travel the arraylist.
Iterator<String> itr = list.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
public ArrayList<String> list2AnotherList(ArrayList<String> list) {
ArrayList<String> antherList = new ArrayList<String>();
list.forEach(element -> {
antherList.add(element);
});
return antherList;
}
public int getNumberOfElement(ArrayList<String> list) {
return list.size();
}
}
class FirstList {
private List<?> list;
private LinkedList<?> linkedList;
public void createListArray() {
ArrayList<String> list = new ArrayList<String>();
addData(list)
.showDataByForEach(list, "ArrayList");
}
public void createLinkedListByList() {
// 使用 List 去實體化 LinkedList.
List<String> list = new LinkedList<String>();
addData(list)
.showDataByForEach(list, "LinkedList");
}
public void createLinkedList() {
// ! 使用 LinkedList 去實體化 LinkedList. (請注意List, LinkedList差異)
// ? 一開始使用linkedlist去實體化,將會有linkedlist的addFirst, addLast功能。
LinkedList<String> linkedList = new LinkedList<String>();
addData(linkedList)
.showDataByForEach(linkedList, "LinkedList (使用linkedlist實體化)"); // 多載方式
}
// ! 請注意spring寫法通常使用 interface class 方式,統一對接口,實體化則各自呼叫。
public void createList() {
List<String> list = new ArrayList<String>();
addData(list)
.showDataByForEach(list, "list");
}
public FirstList addData(List<String> list) {
list.add("TW");
list.add("US");
list.add("HK");
this.list = list;
return this;
}
public FirstList addData(LinkedList<String> linkedList) {
// TODO: 使用多載方式之後,是否可以結合範型來處理?
// ? Reference: https://www.796t.com/post/NTQ5ZjI=.html
linkedList.add("TW");
linkedList.add("US");
linkedList.add("HK");
linkedList.addFirst("UK");
linkedList.addLast("CN");
this.linkedList = linkedList;
return this;
}
// ! 多載方式
public void showDataByForEach(List<?> list, String listName) {
System.out.println("Class Type: " + list.getClass() + " " + System.identityHashCode(list));
System.out.println("開始執行" + listName + "...");
this.list.forEach(s -> {
System.out.println(s);
});
System.out.println("結束" + listName + "...\n");
}
public void showDataByForEach(LinkedList<?> list, String listName) {
System.out.println("Class Type: " + list.getClass() + " " + System.identityHashCode(list));
System.out.println("開始執行" + listName + "...");
// * you can use "list" to foreach them.
this.linkedList.forEach(s -> {
System.out.println(s);
});
System.out.println("結束" + listName + "...\n");
}
}