2015年8月5日 星期三

Java上課練習:集合

集合可以裝集合

類別圖


程式碼如下
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.TreeSet;

//集合可以裝集合(addall)
public class CollectionDemo {

    public static void main(String[] args) {

        //參考類別圖
        ArrayList list = new ArrayList(); //類別 ArraryList 已實作的介面有list、Collection
        list.add(1);
        list.add(2);
        list.add(3);

        HashSet set = new HashSet();//類別 HashSet 已實作的介面有Set、Collection
        set.add(100);
        set.add(90);

        LinkedList list2 = new LinkedList();//類別 LinkedList 已實作的介面有list、Collection
        /*
         LinkedList也是一種Collection,所以可以把另一個Collection(ArraryList or HashSet)直接加入
         */
        list2.addAll(list);//將Collection(list)加入
        list2.addAll(set);
        list2.add(80);
        list2.add(60);
        System.out.println(list2);

        //排序,不可以把不同種類的類別放入,因為要compareTo,會無法比大小
        TreeSet set2 = new TreeSet(list2);//類別 TreeSet 已實作的介面有Set、Collection
        /*
         建構子直接可以裝Collection,不用使用addAll
         */
        System.out.println(set2);

    }

}

集合也可以放物件,但是是參考物件,非複製
import java.util.ArrayList;

//集合裡放的是物件參考
public class CollectionDemo2 {

    public static void main(String[] args) {
        Animal dog=new Dog(); //dog是一個遙控器
        dog.setName("小白");
        
        ArrayList list= new ArrayList(); //ArrayList裡面也有一支list遙控器
        list.add(dog); //實際上是複製參考(共用),並非複製物件
        /*
        把dog這支遙控器複製到List中,所以當dog遙控器改名字,list這支遙控器的名字也會改變
        */
        System.out.println(list);
        
        dog.setName("阿花");//所以dog名字改為阿花,list的dog名字也會變成阿花
        System.out.println(list);
                

    }

}

沒有留言:

張貼留言