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;
	}
}

输出结果:

 

 

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