一、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;
}
}
输出结果: