類別圖
程式碼如下
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); } }
沒有留言:
張貼留言