【Java基礎15_1】Collection類及其基本用法
阿新 • • 發佈:2019-02-15
Collection類->目錄
集合和陣列區別
- 長度區別:
- 陣列的長度是固定的而集合的長度是==可變==的
- 儲存資料型別的區別:
- 陣列可以儲存基本資料型別 , 也可以儲存引用資料型別;
- 而集合只能儲存引用資料型別
- 內容區別:
- 陣列只能儲存同種資料型別的元素 ,集合可以儲存==不同型別==的元素
1.體系結構圖
Collection常見API
- 新增功能
方法宣告 | 作用 |
---|---|
boolean add ( Object obj ) | 新增一個元素 |
boolean addAll ( Collection c ) | 新增一個集合的元素 |
- 刪除功能
方法宣告 | 作用 |
---|---|
void clear() | 移除所有元素 |
boolean remove(Object o) | 移除一個元素 |
boolean removeAll(Collection c) | 移除一個集合的元素(一個) |
- 判斷功能
方法宣告 | 作用 |
---|---|
boolean contains(Object o) | 判斷集合中是否包含指定的元素 |
boolean containsAll(Collection c) | 判斷集合中是否包含指定的集合元素(所有) |
boolean isEmpty( ) | 判斷集合是否為空 |
獲取功能
- 獲取當前集合的迭代器
方法宣告 | 作用 |
---|---|
Iterator < E > iterator( ) | 迭代器遍歷(重點) |
- 長度功能
方法宣告 | 作用 |
---|---|
int size() | 元素的個數 |
- 交集功能
boolean retainAll ( Collection );
把集合轉換為陣列
Objec [ ] toArray()
面試題
- 陣列有沒有 length() 方法呢?字串有沒有length()方法呢 ? 集合有沒有 length( ) 方法呢?
- 答:陣列有 length 屬性;字串有length()方法;集合沒有 length( ),但是有size( )方法
獲取交集的注意事項
boolean retainAll ( Collection c )
- 獲取交集。獲取到的元素去c中,布林型別的值表示集合是否==發生改變==
- 如果c.retainAll(c1), 獲取到的交集元素去了c中,布林型別的值表示c這個集合是否發生改變。如果改變了就返回true.
public class CollectionDemo1 {
public static void main(String[] args) {
//建立一個集合
Collection<String> c1 = new ArrayList<>();
Collection<String> c2 = new ArrayList<>();
//新增元素
c1.add("田馥甄");
c1.add("銀臨");
c1.add("謝春花");
c2.add("謝春花");
System.out.println("c1獲取交集前:"+c1);
System.out.println("c2獲取交集前:"+c2);
//獲取交集
System.out.println("獲取交集後的集合是否發生改變: "+c1.retainAll(c2));
System.out.println("C1獲取交集後: "+c1);
System.out.println("C2: "+c2);
}
}
- 程式執行結果:
c1獲取交集前:[田馥甄, 銀臨, 謝春花]
c2獲取交集前:[謝春花]
獲取交集後的集合是否發生改變: true
C1獲取交集後: [謝春花]
C2: [謝春花]
集合的遍歷
- 其實就是依次獲取集合中的每一個元素。有以下兩種方法:
1. 用陣列遍歷
- 把集合轉成陣列;
- 通過遍歷陣列實現遍歷集合
集合轉為陣列方法:
Object[] toArray():
import java.util.ArrayList;
import java.util.Collection;
/*
* 用陣列遍歷集合
*/
public class CollectionTraversalArray {
public static void main(String[] args) {
//建立集合
Collection<String> c = new ArrayList<String>();
//新增元素
c.add("周杰倫");
c.add("朴樹");
c.add("毛不易");
//轉為陣列
Object[] obj = c.toArray();
//遍歷陣列
for(Object ob:obj) {
//向下轉型
String str = (String)ob;
System.out.print(str+" ");
}
}
}
package com.itbull;
import java.util.ArrayList;
import java.util.Collection;
/*
* 陣列遍歷法
* Collection遍歷自定義型別Singer
*/
public class CollectionTraversalSinger {
public static void main(String[] args) {
//建立Singer
Singer s1 = new Singer("周杰倫","晴天");
Singer s2 = new Singer("樸 樹","白樺林");
Singer s3 = new Singer("譚維維","如果有來生");
// 建立集合
Collection<Singer> c = new ArrayList<Singer>();
c.add(s1);
c.add(s2);
c.add(s3);
//轉為陣列
Object[] arr = c.toArray();
//遍歷陣列
for(Object obj:arr) {
Singer ob = (Singer) obj;
System.out.println(ob.getName()+"-----"+ob.getSongName());
}
}
}
//自定義Singer類
public class Singer {
private String name;
private String songName;
public Singer() {
super();
// TODO Auto-generated constructor stub
}
public Singer(String name, String songName) {
super();
this.name = name;
this.songName = songName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSongName() {
return songName;
}
public void setSongName(String songName) {
this.songName = songName;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((songName == null) ? 0 : songName.hashCode());
return result;
}
@Override
public String toString() {
return "Singer [name=" + name + ", songName=" + songName + "]";
}
}
2. 用迭代器遍歷(重點)
- Iterator 中有如下幾個方法可以用來獲取集合中的元素:
方法名 | 作用 |
---|---|
boolean hasNext ( ) | 判斷是否有下一個元素 |
Object next ( ) | 獲取下一個元素 |
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*
* 迭代器Iterator遍歷String
*/
public class CollectionTraversalIterator {
public static void main(String[] args) {
//建立集合
Collection<String> c = new ArrayList<String>();
//新增元素
c.add("孫燕姿");
c.add("金玟岐");
c.add("范瑋琪");
//獲取當前集合的迭代器物件
Iterator<String> it = c.iterator();
//如果有下一個,就獲取
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*
* 用Iterator遍歷自定義物件Singer
*/
public class CollectionIteratorSinger {
public static void main(String[] args) {
//建立Singer物件
Singer s1 = new Singer("迴音哥","海綿寶寶");
Singer s2 = new Singer("雙 笙","葬花吟");
Singer s3 = new Singer("玄 觴","不朽之罪");
//建立集合物件
Collection<Singer> c = new ArrayList<Singer>();
//將自定義物件新增到集合中
c.add(s1);
c.add(s2);
c.add(s3);
//獲取集合的迭代器物件
Iterator<Singer> it = c.iterator();
System.out.println("\t\t歌手名字\t\t歌曲");
//如果有下一個就獲取
while (it.hasNext()) {
Singer singer = it.next();
System.out.println("\t\t"+singer.getName()+"\t\t"+singer.getSongName());
}
}
}