import java.util.ArrayList;
import java.util.Collection;
/**
*Java2的集合框架,抽其核心,主要有三種:List、Set和Map。如下圖所示:
*需要注意的是,這裏的 Collection、List、Set和Map都是接口(Interface),不是具體的類實現。
* List lst = new ArrayList(); 這是我們平常經常使用的創建一個新的List的語句,在這裏, List是接口,ArrayList纔是具體的類。
*
* 在實際開發中,需要將使用的對象存儲於特定數據結構的容器中。JDK提供了這樣的容器--集合(Collection)
* Collection是一個接口,定義了集合相關的操作方法,其中有兩個子接口:List與Set
* List:可重複集,且有序 Set:不可重複集,大部分實現類是無序的 元素是否可重複,取決於元素的equals()比較的結果
*
*集合存放的是元素的引用(地址)
*集合中存儲的都是引用類型元素,並且集合只保存每個元素對象的引用,而非將元素對象本身存入集合
*/
public class CollectionDemo {
public static void main(String[] args) {
/**
* Collection定義了一個add方法用於向集合中添加新元素
* boolean add(E e)
* 該方法會將給定的元素添加集合,若添加成功則返回true,否則返回false
*/
Collection c=new ArrayList();
c.add("12");
c.add("46");
c.add("45.5");
System.out.println(c);//[12,46,45.5]
/**
* int size()
* 該方法用於返回當前集合中的元素總數
*/
System.out.println("size:"+c.size());//3
/**
* void clear()
* 該方法用於清空當前集合
*/
c.clear();
System.out.println(c);//[]
/**
* boolean isEmpty()
* 該方法用於判斷當前集合中是否不包含任何元素
*/
System.out.println("集合是否不包含任何元素:"+c.isEmpty());//true
/**
* boolean contains(Object o)
* 該方法會用於判斷給定的元素是否被包含在集合中。包含返回true,不包含返回false
* 集合在判斷元素是否被包含在集合中是根據每個元素的equals()方法進行比較後的結果。
* 通常有必要重寫equals()保證contains()方法的合理結果
*/
Collection points=new ArrayList();
points.add(new Point(1,3));
points.add(new Point(2,3));
points.add(new Point(3,3));
System.out.println(points);
Point p=new Point(1,3);
//如果Point不重寫equals方法將爲false,因爲會調用Object中的equals方法,而其中的方法採用的是==,比較的是地址值
System.out.println("集合是否包含P元素:"+points.contains(p));
}
}
class Point {
private int x,y;
public Point(int x, int y) {//構造
super();
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public String toString() {//重寫Object父類方法---返回Point對象的關鍵性數據
return "("+x+","+y+")";
}
public boolean equals(Object obj) {//重寫Object父類方法
//方法執行期間this是當前對象引用
//obj 是另一個對象的引用
//比較關鍵數據:就是比較this(x,y)和obj(x,y)是否相等
if(obj==null) {//對象爲空
return false;
}
if(this==obj) {//對象自己和自己比較
return true;//不用執行下面的語句,性能好
}
if(obj instanceof Point) {
Point other=(Point)obj;//強制類型轉換
return this.x==other.x&&this.y==other.y;
}
return false;
}
}
java-Collection(List、Set)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.