iT邦幫忙

2024 iThome 鐵人賽

0
自我挑戰組

前端工程師的java學習紀錄系列 第 39

Day39-集合Collection

  • 分享至 

  • xImage
  •  

collection 是java中一種容器,用來存放資料,並且只能夠儲存object 的資料(存放基本類型時會自動轉換成包裝類),是屬於接口而非,放在java.util.Collection中。

當中主要包含了兩個分類:

  • List:跟array 很像,可以存放有序、可重複的資料結構
  • Set:可以存放無序、不可重複的資料結構

List

List中有三個常用實作類

  • ArrayList(使用List時主要使用的實作類):基本上是array ,但是可以把它當成動態 的array,當新增長度不夠時,底層 會自動擴充長度,因為有index適用於查詢新增 元素。
  • LinkedList:每一個元素都會有對應的上一個元素和下一個元素的資訊,適用於插入刪除 元素。
  • Vector:java最一開始的List 類,後來在jdk5.0後新增了ListArrayList 後,把它納入List 底下,基本上已經很少使用此類。

Collection 中常用主要使用的方法

使用ArrayList 作為範例

新增元素:add(Object obj)addAll(Collection other)

Collection coll = new ArrayList();

coll.add("ABC");
coll.add("DEF");
coll.add(123);
System.out.println(coll);  //[ABC, DEF, 123] 
Collection coll2 = new ArrayList();
coll2.add("abc");
coll2.add(456);

coll.add(coll2);
coll.addAll(coll2);
System.out.println(coll); //[ABC, DEF, 123, [abc, 456], abc, 456] 

使用add() 時,會將參數的物件當成一個 元素放加入ArrayList ,使用addAll() 時,會將參數集合 中的每一個元素個別加入

長度:int size()

coll.size(); // 6

是否為空:boolean isEmpty()

coll.isEmpty(); // false

是否包含某個物件:boolean contains(Object obj)

是否包含某個集合:boolean containsAll(Collection coll)

是否和某個物件相等:boolean equals(Object obj)

coll.contains("ABC"); // true
coll.contains(888); // false

coll.containsAll(coll2); // true;

使用自定義的類時,要特別注意需要將Object 類中的equals() 方法重寫,預設是使用Object類 中的equals() 進行比較,裡面只是使用== 進行比較,若沒有重寫equals() ,只會使用記憶體中的地址進行比較。

清空:void clear()

coll.clear();
System.out.println(coll); // []

刪除:boolean remove(Object obj)boolean removeAll(Collection coll)

coll.remove("ABC");
System.out.println(coll); // [DEF, 123]

將有交集的集合保留,其餘刪除:boolean retainsAll(Collection coll)

coll.retainsAll(coll2);
System.out.println(coll); //[abc, 456] 

如果放入的集合完全沒有交集時,則會把原本的集合清空

將集合變成陣列:Object toArray()

Object[] arr = coll.toArray();
System.out.println(Arrays.toString(arr); // [ABC, DEF, 123] 

集合的迭代器

Iterator iterator = coll.iterator();

是否有下一個元素:boolean hasNext()

將集合中的第一個元素提取出來:Object next()

iterator.hasNext(); // true
iterator.next(); // ABC

// 對集合的每個元素進行操作
while(iterator.hasNext()) {
	System.out.println(iterator.next()); // 依次將coll的元素印出
}

上一篇
Day38-Comparable、Comparator
系列文
前端工程師的java學習紀錄39
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言