1. 程式人生 > >Collection子介面(List/Set/Queue/SortedSet)

Collection子介面(List/Set/Queue/SortedSet)

Collection主要的子介面:

  • List:可以存放重複內容
  • Set:不能存放重複內容,所有重複的內容靠hashCode()和equals()兩個方法區分
  • Queue:佇列介面
  • SortedSet:可以對集合中的資料進行排序

List介面:

總結了List介面的擴充套件方法,即包含有增刪改查方法.

List介面常用的子類:

ArrayList:可以直接通過物件的多型性為List介面例項化. Vector:算是元老級的類,使用差別不大 LinkedList:表示連結串列的操作類,同時實現List介面和Queue介面

Set介面:

Set介面常用的子類:

HashSet:不能存放重複元素,而且採用雜湊的儲存方式,所以沒有順序 TreeSet:不能存放重複元素,但對輸入的資料進行有序排列(實現了SortedSet介面)
指定排序:
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) ;
	}
};
執行結果: [姓名:張三;年齡:30, 姓名:李四;年齡:31, 姓名:王五;年齡:32, 姓名:孫七;年齡:33, 姓名:趙六;年齡: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) ;
	}
};
執行結果: [姓名:李四;年齡:31, 姓名:張三;年齡:30, 姓名:孫七;年齡:33, 姓名:王五;年齡:32, 姓名:趙六;年齡:33]

Queue介面:

佇列操作介面

SortedSet介面: