假设有一个泛型ArrayList<SomeBean>,SomeBean是一个已知的JavaBean,要求按照SomeBean中的某个属性排序,请问该如何编写代码?
解决方案 »
- JAVA J2EE开发虚拟机装什么系统好
- 怎么样在jbuilder 中生成win32可执行程序
- java中使用进度条为何不能更新进度条?
- 新手迷惑:File类构造方法的问题
- 求质数问题 谁帮我看看到底怎么错了
- 我是JAVA初学者希望大家帮助一下
- 关于jsp连接oracle8i的问题,我按下面的测试不成功,找不到驱动,是不是要再按装驱动程序呢?
- 求教这两个例子,我已经晕了。
- javascript在制作编程中,怎样实现文本框跟随下拉列表的变化而变化?
- 请教java中数据结构的表示法。
- 关于Java类
- ------------------------请教两个的java方法,麻烦给出代码实例谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
单纯的不能排序的 给你一个例子吧
希望对你有所帮助!public class StudentSort { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Student> list=new ArrayList<Student>();
Student a=new Student("胖胖",20,90.5);
Student b=new Student("刘静",20,92.5);
Student c=new Student("苏凯",20,80.5);
Student d=new Student("许三多",20,90.5);
Student e=new Student("成才",20,90.5);
list.add(a);
list.add(b);
list.add(c);
list.add(d);
list.add(e);
Collections.sort(list);
for(Student s:list){
System.out.println("px"+s);
}
}}
class Student implements Comparable{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
private int age;
private double score;
public Student(String s, int i, double d) {
// TODO Auto-generated constructor stub
this.name=s;
this.age=i;
this.score=d;
}
public String toString(){
return "[Student]"+"name:"+name+"age:"+age+"score:"+score;
}
public int compareTo(Object o) {
// TODO Auto-generated method stub
Student s=(Student)o;
return (int) (s.getScore()-this.getScore());
}
}
建议还是用comparator,
comparable在实际项目中不太好用,随便改变一个类的特性项目会出问题的,而且大小比较的特性和类结合起来,重用性和维护起来都麻烦,不小心就会出bug
comparator就把大小比较的特性和类解耦了,而且还可以定义多种排序方式,是个很实用的东西
SomeBean.java
public class SomeBean {
private String name;
private int age;
public SomeBean(){
name = "";
age = 0;
}
public SomeBean(String name, int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "SomeBean[name = " + name + ", age = " + age + "]";
}
}
SortSomeBean.javaimport java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
public class SortSomeBean { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<SomeBean> list = new ArrayList<SomeBean>();
SomeBean a = new SomeBean("zfz",22);
SomeBean b = new SomeBean("jq", 23);
SomeBean c = new SomeBean("qq",21);
list.add(a);
list.add(b);
list.add(c);
System.out.println(list);
Collections.sort(list, new Comparator<SomeBean>() {
public int compare(SomeBean a, SomeBean b){
if(a.getAge() > b.getAge()){
return 1;
}
else if(a.getAge() == b.getAge()){
return 0;
}
else{
return -1;
}
}
});
System.out.println(list);
}}
还是Comparator比较灵活一点,耦合性小
[/Quote
正解