java语言看下图,对象数组,能根据对象的某种属性对数组对象进行排序吗?
2个回答
展开全部
两个方法,一是被比较的类实现Comparable接口,二是使用Comparator比较器。
两种方法各有优劣:
第一种方法:一个类只能有一种比较方法,当需要多种比较方法时,无法实现。
常用的方法是,用第一种方法实现一种默认的,最常用的比较方法。需要其他比较方法时在使用第二种模式。这是数组类的。
import java.util.Arrays;
import java.util.Comparator;
public class SortDemo {
public static void main(String[] args) {
Student[] array = new Student[] {
new Student("A", 80),
new Student("B", 60),
new Student("C", 70),
new Student("D", 100),
new Student("E", 90) };
printArray(array);
Arrays.sort(array);
System.out.println("After Sort");
printArray(array);
Arrays.sort(array, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
return s2.score - s1.score;
}
});
System.out.println("After Sort2");
printArray(array);
}
private static void printArray(Object[] array) {
for (Object o : array) {
System.out.println(o);
}
}
}
class Student implements Comparable<Student> {
public String name;
public int score;
public Student() {
}
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String toString() {
return "Student " + name + " : " + score;
}
public int compareTo(Student other) {
return this.score - other.score;
}
}
这是容器类的。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortDemo {
public static void main(String[] args) {
List<Student> list = new ArrayList();
list.add(new Student("A", 80));
list.add(new Student("B", 60));
list.add(new Student("C", 70));
list.add(new Student("D", 100));
list.add(new Student("E", 90));
printList(list);
Collections.sort(list);
System.out.println("After Sort");
printList(list);
Collections.sort(list, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
return s2.score - s1.score;
}
});
System.out.println("After Sort2");
printList(list);
}
private static void printList(List<Student> list) {
for (Student s : list) {
System.out.println(s);
}
}
}
class Student implements Comparable<Student> {
public String name;
public int score;
public Student() {
}
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String toString() {
return "Student " + name + " : " + score;
}
public int compareTo(Student other) {
return this.score - other.score;
}
}
展开全部
//给name和score加个static
//自己写排序的方法,纯手动,若有代码错误请见谅,思路无误
public void sortTest(Student[] test){
Student s=new Student();
for(int i=0;i<test.length;i++){
for(int j=test.length-1;j>i;j--){
if(test[j].score<test[j-1].score){
s=test[j];
test[j]=test[j-1];
test[j-1]=s;
}
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询