1. 程式人生 > >java之TreeSet裡新增自定義物件

java之TreeSet裡新增自定義物件

package javastudy;


import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;


//一一個類檔案裡面可以有多個類,但是隻能有一個public類,且public類的名字要和檔案的名字相同
public class Testit {


public static void main(String[] args) {
// TreeSet是有序的,可以根據自己定義的方法來做出判斷
// TreeSet<Person> ts = new TreeSet<Person>();
// ts.add(new Person("Jack",20));
// ts.add(new Person("Mary",18));
// ts.add(new Person("Mike",25));
// // print1(ts);
// Iterator<Person> it = ts.iterator();//遍歷器遍歷所有元素
//
// while(it.hasNext())
// {
// //it.next().print();
// Person p = it.next();
// p.print();//利用下面Person類中的print輸出方法來輸出結果
// }
//
// }
// static void print1( TreeSet<Person> ts)
// {
// Iterator<Person> it = ts.iterator();
// while(it.hasNext())
// {
// //it.next().print();
// Person p = it.next();
// p.print();//利用下面Person類中的print輸出方法來輸出結果
// }
//
// }class Dog//注意建立一個class ,後面的名字不需要小括號


TreeSet<Dog> ts = new TreeSet<Dog>(new MyCom());
ts.add(new Dog("MaoMao", 5));
ts.add(new Dog("HuaHua", 6));
ts.add(new Dog("NiuNiu", 10));
Iterator<Dog> it = ts.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}


// 定義一個比較的類
class MyCom implements Comparator<Dog> {


@Override
public int compare(Dog o1, Dog o2) {
// TODO Auto-generated method stub
return o1.name.compareTo(o2.name);
}


// 做一個類
class Person implements Comparable<Person>// 要作出比較,那麼就要使Person類能夠實現比較,就用Comparable
{
String name;
int age;


Person(String name, int age) {
this.name = name;
this.age = age;
}


void print() {
System.out.println(String.format("姓名  =%s,年齡 = %d", name, age));
}


@Override // 重寫一個方法來進行比較
public int compareTo(Person o) {
if (this.age > o.age)// 這裡定義的比較方法是利用age來進行比較,也可以自己定義用name來比較
{ // 根據java.API檔案查出Comparable有這樣的規則
// 值得注意的是Comparable在java.lang(language) 的包裡面
return 1;
} else if (this.age < o.age) {
return -1;
} else {
return 0;
}
}


}


}// 方法


class Dog {
String name;
int weight;


Dog(String name, int weight) {
this.name = name;
this.weight = weight;


}


@Override //
public String toString() {


return "name=" + name + ", weight=" + weight;


}


}
自定義了兩個class,然後在TreesSet裡面新增自定義物件