黑马程序员技术交流社区
标题:
treeSet如何实现排序
[打印本页]
作者:
lxsaks
时间:
2014-12-26 13:34
标题:
treeSet如何实现排序
昨天在做黑马程序员入学的基础测试题,创建一个Student类,有name ,age,score三个属性。创建5个student 对象,装入TreeSet中,要根据score排序。纠结
作者:
pcy1022
时间:
2014-12-26 19:04
自定义一个比较器,重写equals方法和hashcode方法。
作者:
提米特
时间:
2014-12-26 19:52
这个涉及到集合框架部分的知识,集合相当重要。建议自己去好好看看毕向东老师的视频。
作者:
史云龙
时间:
2014-12-26 20:27
1、学生类实现Comparable接口
2、自定义比较器。
代码是毕老师视频里的代码。
可以看JAVA-API这部分第15天【25天版本的视频】中的
【01-集合框架(TreeSet)】、【02-集合框架(TreeSet存储自定义对象)】这两个视频,有详解。
如果不想看视频,就看下面的代码
import java.util.*;
/*
当元素自身不具备比较性,或者具备的比较性不是所需要的。
这时需要让容器自身具备比较性。
定义一个比较器,将比较器作为参数传递给TreeSet集合的构造函数。
当两种排序都存在是,以比较器为主。
定义一个类,实现Comparator接口,覆盖compare方法。
以return:0判断元素相同
*/
class TreeSetDemo1
{
public static void main(String[] args)
{
TreeSet ts = new TreeSet(new MyCompare());
ts.add(new Student("lisi02",22));
ts.add(new Student("lisi007",20));
ts.add(new Student("lisi09",19));
ts.add(new Student("lisi01",19));
ts.add(new Student("lisi01",29));
Iterator it =ts.iterator();
while(it.hasNext()){
Student stu = (Student)it.next();
sop("Name:"+stu.getName()+"::::age:"+stu.getAge());
}
}
public static void sop(Object obj){
System.out.println(obj);
}
}
class Student implements Comparable//该接口强制让学生具备比较性。
{
private String name;
private int age;
Student(String name ,int age){
this.name = name;
this.age=age;
}
public int compareTo(Object obj){
if(!(obj instanceof Student))
throw new RuntimeException("不是学生对象。");
Student stu =(Student)obj;
//System.out.println(this.name+"<--this...........stu-->"+stu.name);
if(this.age>stu.age){
return 1;
}else if(this.age<stu.age){
return -1;
}else{
return this.name.compareTo(stu.name);
}
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
class MyCompare implements Comparator
{
public int compare(Object o1,Object o2){
Student s1 = (Student)o1;
Student s2 = (Student)o2;
int num = s1.getName().compareTo(s2.getName());
if(num==0){
return (new Integer(s1.getAge())).compareTo(new Integer(s2.getAge()));
//return s1.getAge()-s2.getAge();
}
return num;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2