Java集合之List集合的三個子實現類

2021-08-20 02:48:55 字數 3213 閱讀 9691

一.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...