一、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;
}
}
輸出結果: