java集合 TreeSet和HashSet的使用

  1. java集合框架TreeSet的使用
    -使用說明
    -實現接口
    TreeSet是集合Collection的子類接口Set的實現類,是無序不重複的,但是其輸出的結果是有序的,可以實現兩種排序方式: 1.自然排序 2.自定義排序
//自然排序
TreeSet set = new TreeSet();
set.add("2");
set.add("1");
set.add("4");
set.add("8");
set.add("6");
set.add("3");
System.out.println(set);
結果:{1,2,3,4,6,8}
//自定義排序實現接口Comparator
//創建TreeSet對象
Com com = new Com();
TreeSet set = new TreeSet(com);//com實現接口的類
//創建比較器類
class Com implements Comparator{
	@Override
	public int compare(Object o1, Object o2) {
		Clea number = (Clea)o1;
		Clea number1 = (Clea)o2;
		if (number1.age ==  number.age) {
			return 0;
		}
		if (number1.age > number.age) {
			return 1;
		} 
		if (number1.age < number.age) {
			return -1;
		}
		return 0;
	}
	@Override
	public String toString() {
		return super.toString() ;
	}
}
//創建Clea類
class Clea{
	int age;
	public Clea(int age){
		this.age = age;
	}
	@Override
	public String toString() {
		return "[" + age + "]";
	}
}

  1. java集合框架HashSet的使用
    -使用說明:
    重複元素的判斷機制
    –只要 obj == obj1 認爲obj 和obj1是相同的元素
    –equals與hashCode同時相等的時候,認爲相同元素
    (HashSet基於HashMap實現的)
    (利用了Hash鍵不能重複的特點)
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
public class Test02 {
	HashSet set = new HashSet();
	Person p = new Person();
	    p.name = "張三";
	    p.age = 15;
	    Person p3 = new Person();
	    p3.name = "張三";
	    p3.age = 15;
	    System.out.println(p.equals(p3));
	    set.add(p);
	    set.add(p3);
	    System.out.println(set);
	}
}
class Person implements Comparable {
	String name;
	int age;
	@Override  // 自定輸入
	public String toString() {
		return "name = " + this.name + "age =" + this.age;
	}
	@Override  // 自定義相等的規則
	public boolean equals(Object obj) {
	// 如果類型不相等,返回false
	if (!(obj instanceof Person)) {
			return false;
		}
	// 如果名字相同, 返回true
	if (((Person)obj).name.equals(this.name)) {
		return true;
	}
	// 如果名字不相同,返回false
	return false;
	}
	// hashCode
	@Override    // 計算一個對象的hash值
	public int hashCode() {
		return this.name.hashCode();
	}
	// 實現Comparable接口
	@Override
	public int compareTo(Object o) {
		if (o instanceof Person) {
			Person p = (Person)o;
			if (this.age > p.age) { // 大
				return 1; 
			} else if(this.age == p.age) { // 相等
				return 0;
			} else { // 小
				return -1;
			}
		}
		return 0;
	}	
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章