`
liuxi1024
  • 浏览: 390163 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 对象排序--Comparable

阅读更多

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对象排序基础 在Java中,我们可以对两种类型的元素进行排序:原始类型(如int、char)和对象。对于对象,排序主要涉及到`Comparable`接口和`Comparator`接口。 - **Comparable接口**:如果一个类的实例需要被...

    Java 对象排序详解.rar_java 对象排序_对象_排序

    在Java编程语言中,对象排序是一项关键操作,特别是在处理集合数据结构时。本文将深入探讨如何对ArrayList、HashSet、TreeSet以及数组中的对象进行排序。理解这些排序机制对于编写高效且可维护的代码至关重要。 ...

    java排序Comparator和Comparable

    在Java编程语言中,排序是数据处理中一个非常常见的需求,而`Comparator`和`Comparable`接口则是实现排序的关键工具。这两个接口都是用于比较对象,但它们的应用场景和使用方式有所不同。 首先,`Comparable`接口是...

    JAVA 对象数组按照多个属性进行排序

    总结一下,当需要对Java对象数组按多个属性排序时,我们可以: 1. 实现`Comparator`接口并自定义`compare()`方法。 2. 使用lambda表达式或方法引用来创建`Comparator`实例,使代码更加简洁。 3. 对于数组,使用`...

    java 按对象属性排序

    这里我们探讨的主题是如何根据对象的属性进行排序,结合提供的`Simple.java`和`User.java`文件,我们可以假设这是一个关于自定义对象排序的例子。下面将详细解释相关知识点。 1. **Comparable接口**: Java中的`...

    java 对象 排序

    总的来说,Java对象排序是通过实现`Comparable`接口或使用`Comparator`来完成的。理解这两个接口的用法,并熟练掌握`Collections.sort()`和`Arrays.sort()`的使用,是成为熟练Java开发者的必备技能。在实际编程中,...

    Java对象排序中文排序SortedSet排序使用和源码讲

    要实现Java对象的排序,我们需要让这些对象的类实现Comparable接口或者提供Comparator。对于中文排序,我们主要关注的是字符串的比较,因为中文字符的排序规则不同于英文。在Java中,字符串的比较默认基于Unicode...

    java List中对象多属性排序及各属性排序设置

    本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和自定义比较器(Comparator)来完成的,对于复杂的数据排序需求具有很高的灵活性。...

    Java 对象属性map排序示例

    本示例将详细介绍如何对Java对象属性Map进行排序。 首先,了解Map的基本类型。Java提供了HashMap、TreeMap等实现Map接口的类。HashMap是非排序的,而TreeMap是基于红黑树数据结构,会按照键的自然顺序或者自定义...

    JAVA-V2-Interfaces-Comparable-y-Comparator

    在Java编程语言中,`Comparable`和`Comparator`接口是两个非常重要的概念,它们主要用于对象的排序和比较。本文将详细解析这两个接口的工作原理、使用场景以及如何在实际开发中应用。 首先,`Comparable`接口位于`...

    java 实现Comparable接口排序,升序、降序、倒叙

    Java 中的 Comparable 接口是一个非常重要的接口,它提供了一种排序的机制,允许开发者自定义对象的排序规则。在 Java 中,实现 Comparable 接口的类可以使用 Arrays.sort() 或 Collections.sort() 方法对对象列表...

    java List 排序 Collections.sort

    对于大型数据集,`Collections.sort()`通常能提供很好的性能,但如果需要对大量不可变对象或已排序的列表进行排序,使用`TreeSet`或`LinkedHashSet`等集合类型可能会更高效,因为它们在底层实现了红黑树结构,插入和...

    java-GenericSort-源码.rar

    对于集合,Collections.sort方法使用了泛型,可以对任何实现了Comparable接口的对象列表进行排序;对于数组,Arrays.sort方法同样支持泛型,可以对任何实现了Comparable接口的数组进行排序。 3. **Comparable接口**...

    java----java面试

    - 实现`Comparable`接口的对象可以通过`Collections.sort()`等方法进行排序。 - 实现`Comparator`接口的对象可以自定义排序规则。 - 集合框架中提供了多种集合类,如`List`、`Set`、`Map`等,它们各有特点,适用于...

    java,Comparable接口实例

    此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行...

    java-java-lang包.pdf

    - Comparable:一个接口,可以实现对象之间的自然排序。 java.lang包在Java编程中不可或缺,它提供了一系列与语言紧密相关的基础类。随着Java的版本更新,java.lang包也会进行相应的扩展,增加一些新的类或接口以...

    Java-variety-method.rar_Variety

    1. **内置排序方法**:Java的`java.util.Arrays`类提供了一些内置的排序方法,如`Arrays.sort()`,可以对整型、浮点型、字符型以及对象数组进行排序。对于对象数组,它默认使用自然顺序(基于`Comparable`接口)或者...

    java 集合分组与排序

    下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这在Java 8引入的流(Stream)API中得到了很好的支持。`Collectors.groupingBy`方法允许我们将...

    Java集合排序及java集合类详解.pdf

    - **Comparable接口**:用于定义元素之间的比较规则,实现此接口的对象可以被自然排序。 - **实现原理**: - **HashMap**:提供快速的添加、删除和查找操作,但不保证键值对的顺序。 - **TreeMap**:提供排序功能...

Global site tag (gtag.js) - Google Analytics