java-Collection(List、Set)

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;
    }

}
發佈了155 篇原創文章 · 獲贊 37 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章