java之TreeSet里添加自定义对象
2016-07-22 21:05
411 查看
以一个例子来说明:
package javastudy;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
4000
//一一个类文件里面可以有多个类,但是只能有一个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里面添加自定义对象
输出结果为:name=HuaHua, weight=6
name=MaoMao, weight=5
name=NiuNiu, weight=10
package javastudy;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
4000
//一一个类文件里面可以有多个类,但是只能有一个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里面添加自定义对象
输出结果为:name=HuaHua, weight=6
name=MaoMao, weight=5
name=NiuNiu, weight=10
相关文章推荐
- Scanner中next*(), next(), nextLine()混用的问题
- Eclipse常用操作及配置集锦
- Java 集合ArrayList与Vector的详解
- 03-java运算符-函数
- 一、Java数据类型
- SpringMVC访问静态资源
- Java NIO使用及原理分析 (四)
- Java量与变量的区别
- 二叉搜索树的java实现
- Java NIO使用及原理分析(三)
- 使用IntelliJ IDEA 15和Maven 开发Spring Data JPA + MVC Web应用
- Java NIO使用及原理分析(二)
- 三种简单排序算法(java实现)
- Java NIO使用及原理分析 (一)
- Java设计模式-工厂模式
- Java wait(long arg)方法的使用
- 用递归函数和栈操作逆序一个栈
- C#和JAVA利用BASE64实现图片编码解码
- JAVA的自我修养
- Spring框架的反序列化远程代码执行漏洞分析(转)