Collection子介面(List/Set/Queue/SortedSet)
阿新 • • 發佈:2019-02-08
Collection主要的子介面:
- List:可以存放重複內容
- Set:不能存放重複內容,所有重複的內容靠hashCode()和equals()兩個方法區分
- Queue:佇列介面
- SortedSet:可以對集合中的資料進行排序
List介面:
總結了List介面的擴充套件方法,即包含有增刪改查方法.List介面常用的子類:
ArrayList:可以直接通過物件的多型性為List介面例項化. Vector:算是元老級的類,使用差別不大 LinkedList:表示連結串列的操作類,同時實現List介面和Queue介面Set介面:
Set介面常用的子類:
HashSet:不能存放重複元素,而且採用雜湊的儲存方式,所以沒有順序 TreeSet:不能存放重複元素,但對輸入的資料進行有序排列(實現了SortedSet介面)執行結果: [姓名:張三;年齡:30, 姓名:李四;年齡:31, 姓名:王五;年齡:32, 姓名:孫七;年齡:33, 姓名:趙六;年齡:33]class Person implements Comparable<Person>{ private String name ; private int age ; public Person(String name,int age){ this.name = name ; this.age = age ; } public String toString(){ return "姓名:" + this.name + ";年齡:" + this.age ; } public int compareTo(Person per){ if(this.age>per.age){ return 1 ; }else if(this.age<per.age){ return -1 ; }else{ return this.name.compareTo(per.name) ; // 呼叫String中的compareTo()方法 } } }; public class TreeSetDemo{ public static void main(String args[]){ Set<Person> allSet = new TreeSet<Person>() ; allSet.add(new Person("張三",30)) ; allSet.add(new Person("李四",31)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("趙六",33)) ; allSet.add(new Person("孫七",33)) ; System.out.println(allSet) ; } };
去重複元素:
執行結果: [姓名:李四;年齡:31, 姓名:張三;年齡:30, 姓名:孫七;年齡:33, 姓名:王五;年齡:32, 姓名:趙六;年齡:33]class Person{ private String name ; private int age ; public Person(String name,int age){ this.name = name ; this.age = age ; } public boolean equals(Object obj){ // 覆寫equals,完成物件比較 if(this==obj){ return true ; } if(!(obj instanceof Person)){ return false ; } Person p = (Person)obj ; // 向下轉型 if(this.name.equals(p.name)&&this.age==p.age){ return true ; }else{ return false ; } } public int hashCode(){ return this.name.hashCode() * this.age ; // 定義一個公式 } public String toString(){ return "姓名:" + this.name + ";年齡:" + this.age ; } }; public class RepeatDemo{ public static void main(String args[]){ Set<Person> allSet = new HashSet<Person>() ; allSet.add(new Person("張三",30)) ; allSet.add(new Person("李四",31)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("趙六",33)) ; allSet.add(new Person("孫七",33)) ; System.out.println(allSet) ; } };