1. 要求
对象student(id,name,sex,scroe,old);先按scroe排序,当scroe值相同时按old排序
2.解决办法,通过Arrays.sort(Object[])静态方法实现,但是对象需要实现Comparable
3.studen.java
public class Student implements Comparable {
private Integer id;
private String name;
private String sex;
private double score;
private Integer old;
public Student(Integer _id,String _name,String _sex,double _score,Integer _old){
this.setId(_id);
this.setName(_name);
this.setSex(_sex);
this.setScore(_score);
this.setOld(_old);
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public Integer getOld() {
return old;
}
public void setOld(Integer old) {
this.old = old;
}
@Override
public int compareTo(Object o) {
Student others = (Student) o;
if (this.score > others.score)
return -1;
else if (this.score == others.score) {
if (this.old > others.old)
return -1;
else if (this.old == others.old)
return 0;
else
return 1;
} else
return 1;
}
}
说明:compareTo(Object o) 根据jdk API是
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
4.测试类StudentSortDemo.java
public class StudentSortDemo {
public static void main(String[] args) {
Student[] student = {
new Student(1,"Daffy","m",88, 23),
new Student(2,"Dewey","w",69, 44),
new Student(3,"Howard","m",66, 32),
new Student(4,"Louie","w",78, 25),
new Student(5,"Donald","m",69, 30),
new Student(6,"Huey","w",55, 24)
};
System.out.println("Before sorting:");
display(student);
Arrays.sort(student);
System.out.println("\nAfter sorting:");
display(student);
}
public static void display(Student[] student){
for (int i = 0; i < student.length; i++) {
System.out.println("name:" + student[i].getName()+",score:"+student[i].getScore()+",old:"+student[i].getOld());
}
}
}
输出结果为:
Before sorting:
name:Daffy,score:88.0,old:23
name:Dewey,score:69.0,old:44
name:Howard,score:66.0,old:32
name:Louie,score:78.0,old:25
name:Donald,score:69.0,old:30
name:Huey,score:55.0,old:24
After sorting:
name:Daffy,score:88.0,old:23
name:Louie,score:78.0,old:25
name:Dewey,score:69.0,old:44
name:Donald,score:69.0,old:30
name:Howard,score:66.0,old:32
name:Huey,score:55.0,old:24
分享到:
相关推荐
Java对象排序基础 在Java中,我们可以对两种类型的元素进行排序:原始类型(如int、char)和对象。对于对象,排序主要涉及到`Comparable`接口和`Comparator`接口。 - **Comparable接口**:如果一个类的实例需要被...
在Java编程语言中,对象排序是一项关键操作,特别是在处理集合数据结构时。本文将深入探讨如何对ArrayList、HashSet、TreeSet以及数组中的对象进行排序。理解这些排序机制对于编写高效且可维护的代码至关重要。 ...
在Java编程语言中,排序是数据处理中一个非常常见的需求,而`Comparator`和`Comparable`接口则是实现排序的关键工具。这两个接口都是用于比较对象,但它们的应用场景和使用方式有所不同。 首先,`Comparable`接口是...
总结一下,当需要对Java对象数组按多个属性排序时,我们可以: 1. 实现`Comparator`接口并自定义`compare()`方法。 2. 使用lambda表达式或方法引用来创建`Comparator`实例,使代码更加简洁。 3. 对于数组,使用`...
这里我们探讨的主题是如何根据对象的属性进行排序,结合提供的`Simple.java`和`User.java`文件,我们可以假设这是一个关于自定义对象排序的例子。下面将详细解释相关知识点。 1. **Comparable接口**: Java中的`...
总的来说,Java对象排序是通过实现`Comparable`接口或使用`Comparator`来完成的。理解这两个接口的用法,并熟练掌握`Collections.sort()`和`Arrays.sort()`的使用,是成为熟练Java开发者的必备技能。在实际编程中,...
要实现Java对象的排序,我们需要让这些对象的类实现Comparable接口或者提供Comparator。对于中文排序,我们主要关注的是字符串的比较,因为中文字符的排序规则不同于英文。在Java中,字符串的比较默认基于Unicode...
本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和自定义比较器(Comparator)来完成的,对于复杂的数据排序需求具有很高的灵活性。...
本示例将详细介绍如何对Java对象属性Map进行排序。 首先,了解Map的基本类型。Java提供了HashMap、TreeMap等实现Map接口的类。HashMap是非排序的,而TreeMap是基于红黑树数据结构,会按照键的自然顺序或者自定义...
在Java编程语言中,`Comparable`和`Comparator`接口是两个非常重要的概念,它们主要用于对象的排序和比较。本文将详细解析这两个接口的工作原理、使用场景以及如何在实际开发中应用。 首先,`Comparable`接口位于`...
Java 中的 Comparable 接口是一个非常重要的接口,它提供了一种排序的机制,允许开发者自定义对象的排序规则。在 Java 中,实现 Comparable 接口的类可以使用 Arrays.sort() 或 Collections.sort() 方法对对象列表...
对于大型数据集,`Collections.sort()`通常能提供很好的性能,但如果需要对大量不可变对象或已排序的列表进行排序,使用`TreeSet`或`LinkedHashSet`等集合类型可能会更高效,因为它们在底层实现了红黑树结构,插入和...
对于集合,Collections.sort方法使用了泛型,可以对任何实现了Comparable接口的对象列表进行排序;对于数组,Arrays.sort方法同样支持泛型,可以对任何实现了Comparable接口的数组进行排序。 3. **Comparable接口**...
- 实现`Comparable`接口的对象可以通过`Collections.sort()`等方法进行排序。 - 实现`Comparator`接口的对象可以自定义排序规则。 - 集合框架中提供了多种集合类,如`List`、`Set`、`Map`等,它们各有特点,适用于...
此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行...
- Comparable:一个接口,可以实现对象之间的自然排序。 java.lang包在Java编程中不可或缺,它提供了一系列与语言紧密相关的基础类。随着Java的版本更新,java.lang包也会进行相应的扩展,增加一些新的类或接口以...
1. **内置排序方法**:Java的`java.util.Arrays`类提供了一些内置的排序方法,如`Arrays.sort()`,可以对整型、浮点型、字符型以及对象数组进行排序。对于对象数组,它默认使用自然顺序(基于`Comparable`接口)或者...
下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这在Java 8引入的流(Stream)API中得到了很好的支持。`Collectors.groupingBy`方法允许我们将...
- **Comparable接口**:用于定义元素之间的比较规则,实现此接口的对象可以被自然排序。 - **实现原理**: - **HashMap**:提供快速的添加、删除和查找操作,但不保证键值对的顺序。 - **TreeMap**:提供排序功能...