集合(List)
*java.util.ArrayList:實現(xiàn)List接口,采用線性結(jié)構(gòu)進(jìn)行存儲,可變長度的數(shù)組.
java.util.Vector:實現(xiàn)List接口,采用線性結(jié)構(gòu)進(jìn)行存儲
* ArrayList和Vector的區(qū)別:
* ArrayList:非線程安全的,效率較高
* Vector:線程安全,效率較低,如果在多線程程序中推薦使用Vector
*不唯一,有序
*使用場景:遍歷或隨機(jī)訪問時效率較高,添加和刪除元素需要大量移動位置,效率較低
*常見操作:
*添加:
*add(E e):將指定的元素添加到此列表的尾部。
*add(int index, E element):將指定的元素插入此列表中的指定位置。
*查詢:
*get(int index):返回此列表中指定位置上的元素。
*刪除:
*remove(int index):移除此列表中指定位置上的元素。
*修改:
*set(int index, E element):用指定的元素替代此列表中指定位置上的元素。
*其他:
*size():返回此列表中的元素數(shù)。
*isEmpty():如果此列表中沒有元素,則返回 true
List list = new ArrayList();//向上轉(zhuǎn)型
?
?
* -------Collection接口-------
*--List接口:可重復(fù),有序
*----ArrayList類
*--Set接口 :不可重復(fù),無序
*
*java.util.Iterator:對 collection 進(jìn)行迭代的迭代器
*hasNext(): 如果仍有元素可以迭代,則返回 true。
*next() : 返回迭代的下一個元素
*
*Collection常用方法:
*addAll(Collection<? extends E> c):將指定 collection 中的所有元素都添加到此 collection 中(可選操作)。
*iterator():返回在此 collection 的元素上進(jìn)行迭代的迭代器。
*clear():移除此 collection 中的所有元素(可選操作)。
*contains(Object o):如果此 collection 包含指定的元素,則返回 true。
?
?
泛型:
* 語法:List<E> list = new ArrayList<E>();
* 優(yōu)點:
* 避免獲取元素時強(qiáng)制轉(zhuǎn)型
* 消除黃色警告.
* 將用戶輸入的5個整數(shù)轉(zhuǎn)換成2進(jìn)制輸出
?
?
* List接口繼承了Collection接口
* LinkedList類:實現(xiàn)了List接口,采用的鏈表結(jié)構(gòu)進(jìn)行存儲。
* 使用場景:
* 添加刪除元素時效率較高,遍歷和隨機(jī)訪問時效率較低
* 特有方法:
* addFirst(E e) 將指定元素插入此列表的開頭。
addLast(E e) 將指定元素添加到此列表的結(jié)尾。
removeFirst() 移除并返回此列表的第一個元素。
removeLast() 移除并返回此列表的最后一個元素。
getFirst() 返回此列表的第一個元素。
getLast() 返回此列表的最后一個元素。
public class TestLinkedList {
public static void main(String[] args) {
// List<String> list = new LinkedList<String>();//向上轉(zhuǎn)型
LinkedList<String> list = new LinkedList<String>();
list.add("java");
list.add("oracle");
list.add("html");
list.addFirst("C");
list.addLast("jsp");
list.add("mysql");
list.add("struts2");
list.removeFirst();
list.removeLast();
for (String string : list) {
System.out.println(string);
}
System.out.println("*************");
System.out.println("第一個元素:"+list.getFirst());
System.out.println("最后一個元素:"+list.getLast());
}
}
?
?
?
* List接口:
* --ArrayList
* --LinkedList
* --Vector
* ----Stack
* java.util.Stack類:繼承Vector類
* push(E item):把項壓入堆棧頂部。
* pop() 移除堆棧頂部的對象,并作為此函數(shù)的值返回該對象。
*
*棧:一種特殊存儲結(jié)構(gòu),滿足后進(jìn)先出的特性,類似于生活中"彈夾"(第一個壓進(jìn)去的最一個彈出)
*先進(jìn)后出(First In Last Out)-->FILO
* 后進(jìn)先出(Last In Frist Out)-->LIFO *
*操作:
* 壓棧:push
* 出棧(彈棧):pop
*/
public class MyStack {
LinkedList list = new LinkedList();
/**
* 壓棧的操作
*/
public void push(Object obj){
// list.addLast(obj);
list.addFirst(obj);
}
/**
* 出棧的操作
* @return:返回并移除棧頂?shù)脑?br /> */
public Object pop(){
// Object obj= = list.removeLast();
Object obj =list.removeFirst();
return obj;
}
public static void main(String[] args) {
// Stack<String> stack = new Stack<String>();
// stack.push("java");
// stack.push("oracle");
// stack.push("html");
// for (int i = 0; i < 3; i++) {
// String el=stack.pop();
// System.out.println(el);
// }
MyStack stack = new MyStack();
stack.push("java");
stack.push("oracle");
stack.push("html");
for (int i = 0; i < 3; i++) {
Object obj=stack.pop();
System.out.println(obj);
}
}
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/seePoppy/p/6745288.html
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
- 上一篇: 帝国学习笔记
- 下一篇: 【Alpha】第一次Daily Scru