菜鸟请教 对象的比较问题? 现在有Student类,Student类中有两个属性String name;int score;怎样将Student类的对象按name排序?请高手指点!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用比较器comparator重写compare方法就行了,这个在TreeMap里经常用的 自定义函数实现吧就像String 的equal 好像java 不能重载除了+号的运算符 import java.util.*;public class Test { public static void main(String[] args) { TreeMap map = new TreeMap(); Student s1,s2,s3; //实例化对象 s1=new Student(); s1.name="zhangsan"; s1.score=60; s2=new Student(); s2.name="ls"; s2.score=70; s3=new Student(); s3.name="ww"; s3.score=80; //将对象放入map map.put(s1.name,s1); map.put(s2.name,s2); map.put(s3.name,s3); Collection col = map.values(); Iterator it = col.iterator(); while(it.hasNext()) { Student s=(Student)it.next(); System.out.println(s.name); } } }class Student{ String name; int score;} TreeMap<Student> map=new TreeMap<student>(new Comparator<Student>(){public int compare(Student s1,Student s2){if(s1==null||s2==null) return 0;return s1.name.compareTo(s2.name);return 0;}}); public class C { public static void main(String[] args) { Set<Student> set = new TreeSet<Student>(); Student s1, s2, s3; // 实例化对象 s1 = new Student(); s1.name = "zhangsan"; s1.score = 60; s2 = new Student(); s2.name = "ls"; s2.score = 70; s3 = new Student(); s3.name = "ww"; s3.score = 80; set.add(s1); set.add(s2); set.add(s3); for (Student stu: set) { System.out.println(stu.name); } }}//自定义排序class Student implements java.lang.Comparable { String name; int score; public int compareTo(Object o) { Student stu = (Student) o; return this.name.compareTo(stu.name); }} package com.ricky.www;@SuppressWarnings("unchecked")public class Student implements Comparable { private String name; private String score; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getScore() { return score; } public void setScore(String score) { this.score = score; } @Override public int compareTo(Object o) { @SuppressWarnings("unused") Student student1 = (Student) o; return this.getName().compareTo(student1.getName()); } public String toString() { return this.getName() + ":" + this.getScore(); }}package com.ricky.www;import java.util.Set;import java.util.TreeSet;public class Test { public static void main(String[] args) { Student ricky = new Student(); Student jerry = new Student(); ricky.setName("ricky"); ricky.setScore("89"); jerry.setName("jerry"); jerry.setScore("99"); Set<Student> set = new TreeSet<Student>(); set.add(ricky); set.add(jerry); for (Student stu1 : set) { System.out.println(stu1); } }} 各位高手见笑了,我再问一个低级的问题:怎样按score排序啊?public int compareTo(String s)传递的参数是String类型的,怎样对整形的字段进行compareTo排序啊? public int compareTo(Student other){ return this.score.compareTo(other.score); } 也发表一下,路过帮忙。import java.util.*;public class Student implements Comparable<Student>{ public Student(String name ,int score) { this.name = name; this.score = score; } public int compareTo(Student other) { return name.compareTo(other.name); } public String toString() { return "score : "+score+",name : "+name; } public static void main(String[] args) { Student[] student = new Student[3]; student[0] = new Student("ang san",3); student[1] = new Student("bruse si",1); student[2] = new Student("chang hu",9); Arrays.sort(student); for(Student s:student) System.out.println(s); } private String name; private int score;} 高手可不带忽悠人的啊,Cannot invoke compareTo(int) on the primitive type int return this.score.compareTo(other.score); 参数必须是String类型啊? 求一pl/sql简单教程 怎么写, Java基础的一道编程题. 新手求助 用过JCreater的帮忙 有用installAnywhere吗?这里有个问题,求助一下 一个很基础的问题 java的look&feel或者皮肤 在crystal report 10.0在IE下的view中无法调出打印按钮?? 使用XML自定义控件(Custom Control Designed by XML) 我的一种实现:把图片文件写进数据库并读取显示,欢迎批评指正。 表达式的提升 myclipse7.0调试进入加载器类
重写compare方法就行了,这个在TreeMap里经常用的
public class Test {
public static void main(String[] args) {
TreeMap map = new TreeMap();
Student s1,s2,s3;
//实例化对象
s1=new Student();
s1.name="zhangsan";
s1.score=60;
s2=new Student();
s2.name="ls";
s2.score=70;
s3=new Student();
s3.name="ww";
s3.score=80;
//将对象放入map
map.put(s1.name,s1);
map.put(s2.name,s2);
map.put(s3.name,s3); Collection col = map.values();
Iterator it = col.iterator();
while(it.hasNext()) {
Student s=(Student)it.next();
System.out.println(s.name);
}
} }
class Student
{
String name;
int score;
}
public int compare(Student s1,Student s2){
if(s1==null||s2==null) return 0;
return s1.name.compareTo(s2.name);
return 0;
}
});
public class C {
public static void main(String[] args) {
Set<Student> set = new TreeSet<Student>();
Student s1, s2, s3;
// 实例化对象
s1 = new Student();
s1.name = "zhangsan";
s1.score = 60;
s2 = new Student();
s2.name = "ls";
s2.score = 70;
s3 = new Student();
s3.name = "ww";
s3.score = 80;
set.add(s1);
set.add(s2);
set.add(s3);
for (Student stu: set) {
System.out.println(stu.name);
}
}}//自定义排序
class Student implements java.lang.Comparable {
String name; int score; public int compareTo(Object o) {
Student stu = (Student) o;
return this.name.compareTo(stu.name);
}
}
package com.ricky.www;@SuppressWarnings("unchecked")
public class Student implements Comparable {
private String name;
private String score; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getScore() {
return score;
} public void setScore(String score) {
this.score = score;
} @Override
public int compareTo(Object o) {
@SuppressWarnings("unused")
Student student1 = (Student) o;
return this.getName().compareTo(student1.getName());
} public String toString() {
return this.getName() + ":" + this.getScore();
}}
package com.ricky.www;import java.util.Set;
import java.util.TreeSet;public class Test {
public static void main(String[] args) {
Student ricky = new Student();
Student jerry = new Student(); ricky.setName("ricky");
ricky.setScore("89"); jerry.setName("jerry");
jerry.setScore("99"); Set<Student> set = new TreeSet<Student>();
set.add(ricky);
set.add(jerry);
for (Student stu1 : set) {
System.out.println(stu1);
}
}
}
public int compareTo(Student other)
{
return this.score.compareTo(other.score);
}
public class Student implements Comparable<Student>
{
public Student(String name ,int score)
{
this.name = name;
this.score = score;
}
public int compareTo(Student other)
{
return name.compareTo(other.name);
}
public String toString()
{
return "score : "+score+",name : "+name;
}
public static void main(String[] args)
{
Student[] student = new Student[3];
student[0] = new Student("ang san",3);
student[1] = new Student("bruse si",1);
student[2] = new Student("chang hu",9);
Arrays.sort(student);
for(Student s:student)
System.out.println(s);
}
private String name;
private int score;
}
Cannot invoke compareTo(int) on the primitive type int
return this.score.compareTo(other.score); 参数必须是String类型啊?