📄 fig7-32.java
字号:
import java.io.*;
import java.util.TreeSet;
class Person {
protected String name;
protected int age;
public Person(String s, int i) {
name = s; age = i;
}
public Person() {
this("",0);
}
public String toString() {
return "(" + name + "," + age + ")";
}
}
class PersonByName extends Person implements Comparable {
public PersonByName(String s, int i) {
super(s,i);
}
public PersonByName() {
super();
}
public PersonByName(Person p) {
super(p.name,p.age);
}
public int compareTo(Object p) {
return name.compareTo(((Person)p).name);
}
}
class PersonByAge extends Person implements Comparable {
public PersonByAge(String s, int i) {
super(s,i);
}
public PersonByAge() {
super();
}
public PersonByAge(Person p) {
super(p.name,p.age);
}
public int compareTo(Object p) {
return age - ((Person)p).age;
}
}
class PersonComparator implements java.util.Comparator {
public int compare(Object ob1, Object ob2) {
if (ob1 == ob2)
return 0;
else if(ob1 == null)
return -1;
else if (ob2 == null)
return 1;
else return ((Person)ob1).name.compareTo(((Person)ob2).name);
}
}
class TestTreeSet {
public static void main(String[] ar) {
TreeSet set1 = new TreeSet(); // set1 = []
set1.add(new Integer(4)); // set1 = [4]
set1.add(new Integer(5)); // set1 = [4, 5]
set1.add(new Integer(6)); // set1 = [4, 5, 6]
set1.add(new Integer(5)); // set1 = [4, 5, 6]
System.out.println("set1 = " + set1);// set1 = [4, 5, 6]
System.out.println(set1.contains(new Integer(5))); // true
System.out.println(set1.contains(new Integer(7))); // false
System.out.println(set1.first() + " " + set1.last()); // 4 6
System.out.println(set1.headSet(new Integer(5))); // [4]
System.out.println(set1.tailSet(new Integer(5))); // [5, 6]
TreeSet set2 = new TreeSet(set1); // set2 = [4, 5, 6]
set2.remove(new Integer(5)); // set2 = [4, 6]
System.out.println("set2 = " + set2);
set1.removeAll(set2); // set1 = [5]
System.out.println("set1 = " + set1);
set1.addAll(set2); // set1 = [4, 5, 6]
System.out.println("set1 = " + set1);
TreeSet pSet1 = new TreeSet(), pSet2 = new TreeSet();
Person[] p = {new Person("Gregg",25), new Person("Ann",30),
new Person("Bill",20), new Person("Gregg",35),
new Person("Kay",30)};
for (int i = 0; i < p.length; i++)
pSet1.add(new PersonByName(p[i]));
System.out.println("pSet1 = " + pSet1);
// pSet1 = [(Ann,30), (Bill,20), (Gregg,25), (Kay,30)]
for (int i = 0; i < p.length; i++)
pSet2.add(new PersonByAge(p[i]));
System.out.println("pSet2 = " + pSet2);
// pSet2 = [(Bill,20), (Gregg,25), (Ann,30), (Gregg,35)]
java.util.Iterator it = pSet2.iterator();
it.next();
((Person)it.next()).age = 50;
System.out.println("pSet2 = " + pSet2);
// pSet2 = [(Bill,20), (Gregg,50), (Ann,30), (Gregg,35)]
pSet2.add(new PersonByAge("Craig",40));
System.out.println("pSet2 = " + pSet2);
// pSet2 = [(Bill,20), (Craig,40), (Gregg,50), (Ann,30), (Gregg,35)]
for (int i = 0; i < p.length; i++)
System.out.println(p[i] + " " + pSet2.contains(new PersonByAge(p[i])));
// (Gregg,25) false
// (Ann,30) false
// (Bill,20) true
// (Gregg,35) false
// (Kay,30) false
TreeSet pSet3 = new TreeSet(new PersonComparator());
for (int i = 0; i < p.length; i++)
pSet3.add(p[i]);
System.out.println("pSet3 = " + pSet3);
pSet3.add(null);
pSet3.add(null);
System.out.println("pSet3 = " + pSet3);
// pSet3 = [null, (Ann,30), (Bill,20), (Gregg,25), (Kay,30)]
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -