Java集合(HashSet的子類LinkedHashSet和Set的實現類TreeSet)

 一、LinkedHas類特性

LinkedHashSet類與HashSet不同的是,它保證了有序。

程序代碼:

package com.linkedhashset;

import java.util.LinkedHashSet;

public class LinkedHashSetDemo{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//與HashSet不同的,保證了有序
		LinkedHashSet<String> lhs = new LinkedHashSet<String>();
		
		lhs.add("hello");
		lhs.add("world");
		lhs.add("java");
		lhs.add("hello");
		
		for(String l: lhs) {
			System.out.println(l);
		}
	}

}

輸出結果:

 

二、TreeSet類特性

TreeSet類能對元素按照某種規則進行排序:

兩種方式:1.自然排序

                     如果一個類的元素想要自然排序,必須實現自然排序接口,

           2.比較器排序

 程序代碼(自然排序Integer):

package com.treeset;

import java.util.TreeSet;

public class TreeSetDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TreeSet<Integer> ts = new TreeSet<Integer>();
		
		//自動裝箱
		ts.add(12);
		ts.add(16);
		ts.add(15);
		ts.add(12);
		ts.add(14);
		ts.add(15);
		
		for(Integer t : ts) {
			System.out.println(t);
		}
	}

}

輸出結果: 

 程序代碼(自然排序Student):

//TreeSetDemo2.java
package com.treeset;

import java.util.TreeSet;

public class TreeSetDemo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TreeSet<Student> ts = new TreeSet<Student>();
		
		Student s1 = new Student("zhang",20);
		Student s2 = new Student("zha",25);
		Student s3 = new Student("zhan",28);
		Student s4 = new Student("chang",25);
		Student s5 = new Student("cha",26);
		Student s6 = new Student("chan",27);
		
		ts.add(s1);
		ts.add(s2);
		ts.add(s3);
		ts.add(s4);
		ts.add(s5);
		ts.add(s6);
		
		for(Student s : ts) {
			System.out.println(s.name+":"+s.age);
		}
	}
}

//Student.java
package com.treeset;

public class Student implements Comparable<Student>{//實現自然排序接口
	public String name;
	public int age;
	
	public Student() {
	}
	
	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public int compareTo(Student s) {
		// TODO Auto-generated method stub
		int num,num2;
		num  = this.age-s.age;//比較年齡
        //String類已經實現過自然排序接口,下面比較字符串可直接用
		num2 = num==0?this.name.compareTo(s.name):num;//年齡爲零時(相等)比較姓名
		return num2;
	}
}

輸出結果:

 

 

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