主要在使用這兩種類型時常常會忘記,所以簡單整理一下內容
Stack<Character> stack = new stack<>();
屬於LIFO的特性,也就是先進後出的概念,因此所有動作通常是發生在top,可以想像成放球的瓶子,只有頂端一個開口可以拿最上面的那顆球。
可以使用的函數分別為 push(放球進去)、pop(移除最頂端的球)、peek(取最上面的球)、empty(檢查是否為空)、 search(搜尋特定的球,回傳距離頂端多遠)。
Queue<String> queue = new LinkedList<String>();
與Stack不同的點在屬於先進先出(FIFO),可以想像成單一方向的排隊,只能從後端進入,前端出去。像是LinkedList類即是實現Queue的一種方式。
常用方法有offer(添加元素)、poll(返回第一個元素,並從隊列中刪除)、element(返回第一個元素)、peek(返回第一個元素)。
程式碼宣告:
StringBuffer aBuffer = new StringBuffer(“aacc”);
使用時機:需要對String類進行不斷修改的話。
StringBuilder相較於StringBuffer來說速度較快,但若是有Thread安全問題,建議使用StringBuffer類。
程式碼:
aBuffer.append(“Buffer2”); //增加字符進buffer
reverse()// 將字符串反轉
delete(int start, int end) //移除序列中的字符
insert(int offset, int i) //在第offerset的位置替換為i的字符
replace(int start, int end, String str) //將字符串的內容替換
HashSet<String> sites = new HashSet<String>();
HashSet是實作Set介面的物件,而在Set裡面的物件都是唯一的。
而他是由HashMap實現,因此並沒有排列順序。
add(“abc”) //加入元素
Iterator it = hashset.iterator(); //iterator用來處理任何的collection類別
while(it.hasNext()) { …} //將hashSet進行loop
//可以不用宣告大小,也可不宣告型態
ArrayList<> AL = new ArrayList(); //不宣告型態
ArrayList<String> AL = new ArrayList<String>();
//String型態(另外還Integer型態)
利用add()加入元素,get取得元素,remove刪除元素,set(1,”b”)取代元素,index(“ccc”)查找元素回傳index,clear清除元素。
相較之下,List單純為ArrayList的一個街口,但只能使用List的方法,實例話要採用ArrayList。
List<String> list = new ArrayList<>();