一.list集合的子實現類特點
list集合有三個子實現類:
arraylist
底層資料結構式陣列結構,查詢塊,增刪慢
從記憶體角度考慮:執行緒不安全的,不同步的,執行效率高
多執行緒:synchronized :同步的意思 解決執行緒安全問題
sychronized(鎖物件)
解決執行緒安全問題,通過同步可以解決,但是效率低了...
linkedlist
底層資料結構式鍊錶結構,查詢慢,增刪塊
從記憶體角度考慮:執行緒不安全,不同步,執行效率高
vector
這是乙個執行緒安全的類,
底層資料結構是陣列:查詢快,增刪慢
執行緒安全的,同步,執行效率低!
二.arraylist集合
(1)arraylist是list介面中常用的乙個子實現類
(2)遍歷功能:
1)乙個是collection的iterator()
2)size()和get(int index)普通for迴圈
//需求:arraylist集合儲存自定義物件並遍歷
public static void main(string args)
system.out.println("--------------------");
//普通for迴圈
for(int x = 0 ; x 二.vector集合
(1)底層是一種可增長物件陣列,查詢快,增刪慢
執行緒安全,同步,執行效率高
(2)特有功能:
public void addelement(object obj)------->add(object obj)
public enumeration elements():返回此向量的列舉--->相當於:public iterator iterator()
boolean hasmoreelements() --->boolean hasnext() ;
object nextelement() --->object next() ;
public static void main(string args)
}
三.linkedlist集合
(1)底層是一種鍊錶實現,查詢慢,增刪快
執行緒不安全的,不同步,執行效率高
(2)特有功能:
新增功能
addfirst(object e):將指定的元素插入到列表的開頭
addlast(object e):將指定的元素新增到列表末尾
獲取功能:
getfirst():獲取列表第乙個元素
getlast():獲取列表第二個元素
刪除功能
public object removefirst()移除並返回此列表的第乙個元素。
public object removelast()
public static void main(string args)
(3)[需求] 模擬棧結構的特點,先進後出
理解:需要自定義乙個類,在這個類中使用linkedlist集合的特有功能進行操作
/**
* 這是自定義的棧集合類
* 在這個mystack中使用linkedlist的特有功能
* @author administrator
* *
*/public class mystack
//新增元素
public void add(object obj)
//獲取元素
public object get()
//判斷功能
public boolean isempty()
}
/**
* 棧集合的測試類
* @author administrator
* */
public class mystackdemo
}}
四.集合去重
[需求1]給集合中新增重複的元素(字串型別),將重複的元素從集合去除掉!
思路:* 1)建立乙個舊集合,新增重複元素
* 2)建立乙個新集合
* 3)遍歷舊集合中的元素獲取到每乙個元素
* 在舊集合中判斷新集合中是否包含舊集合中的元素
* 包含,不搭理
* 不包含,新增到新集合中
* 4)遍歷新集合
public static void main(string args)
} //遍歷新集合
iterator it2 = newlist.iterator() ;
while(it2.hasnext())
}
假設:現在的需求:不允許新建乙個集合去完成,怎麼辦?
/*** 引入選擇排序,
* 用0索引對應的元素依次和後面索引對應的元素進行比較
* 如果前面的元素和後面的元素重複了,把後面的元素乾掉
* 依次1索引....
*/
public static void main(string args)
}}
//遍歷集合
iterator it = array.iterator() ;
while(it.hasnext())
}
[需求2]使用集合arraylist儲存自定義物件(student),去除重複的物件(成員變數的值一樣,看成乙個人)
發現問題:按照儲存字串(新建集合的思想)的形式來去儲存自定義物件,發現自定義物件並沒有去重,為什麼?
* contains方法底層依賴於equals方法
* equals方法預設比較的是位址值,如果想讓equals()方法比較他們的內容是否相同,需要重寫equals(),也就意味著儲存自定義類,必須重寫equals()方法,這樣才能比較的是這些物件的內容是否相同
public static void main(string args)
} //遍歷新集合
iterator it2 = newarray.iterator() ;
while(it2.hasnext())
}
Java 集合框架 List 集合
arraylist,linkedlist,vector,stack是list的4個實現類。arraylist 是乙個陣列佇列,相當於動態陣列。它由陣列實現,隨機訪問效率高,隨機插入 隨機刪除效率低。linkedlist 是乙個雙向鍊錶。它也可以被當作堆疊 佇列或雙端佇列進行操作。linkedlist...
java 集合框架 之 list
list 介面 常見實現類 arraylist是基於陣列實現的,是乙個陣列佇列。可以動態的增加容量!查詢快 1.增加乙個值 list nums new arraylist nums.add 3 nums.add 5 nums.add 1 nums.add 0 system.out.println n...
Java之List集合排序
1.類實現comparable 介面 public class book implements comparable public void setbookname string bookname public double getunitprice public void setunitprice...