`

Comparable接口 实现类的自动排序

 
阅读更多
public class Duck implements Comparable {
	//实现了comparable接口的对象可以使用Arrays.sort(object[])或者Collections.sort(list)进行排序;
	
	private String name;
	private int weight;

	@Override
	public int compareTo(Object o) { // a.comparableTo(b) 与0比较
		Duck oDuck = (Duck) o;
		if(this.weight > oDuck.weight){
			return 1;
		}else if(this.weight < oDuck.weight){
			return -1;
		}else {
			return 0;
		}
	}

	public Duck(String name, int weight) {
		super();
		this.name = name;
		this.weight = weight;
	}

	@Override
	public String toString() {
		return name + "\tweight :  " + weight;
	}
}






测试:

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;

public class MainTest {
	public static void main(String[] args) {
		int numDuck = 3;
		Duck duck[] = new Duck[3];
		duck[0] = new Duck("duck1", 25);
		duck[1] = new Duck("duck2", 23);
		duck[2] = new Duck("duck3", 24);

//		Arrays.sort(duck);   //排序1

               ArrayList<Duck> list = new ArrayList<Duck>();   //排序2
		for (int i = 0; i < 3; i++) {
			list.add(duck[i]);
		}
		Collections.sort(list);
		
		for (int i = 0; i < 3; i++) {
			System.out.println(list.get(i));
		}
	}
}




总结:接口comparable中使用了模板方法模式,在子类中我们只需要实现comparableTo() 方法定义排序的语法规则即可,至于具体的排序算法都由  模板方法(sort())来实现。         ====模板方法模式

0
1
分享到:
评论

相关推荐

    java,Comparable接口实例

    实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。 强烈推荐(虽然不是必需的)使自然...

    Java8HashMap键与Comparable接口编程开

    如果HashMap的键类实现了Comparable接口,那么在进行某些操作,如流式操作(Stream API)的排序时,HashMap会自动使用这个比较规则。 例如,假设我们有一个Person类,它包含一个年龄字段并实现了Comparable接口: ...

    推选Comparable自比较接口PPT资料.pptx

    此外,通过Java的工具类`Collections`和`Arrays`,可以对实现了Comparable接口的对象列表或数组进行自动排序,如使用`Collections.sort()`和`Arrays.sort()`方法。 在Java中,一些预定义的类,如`Integer`、`Double...

    492.490.JAVA基础教程_常用类-自定义类实现Comparable自然排序(492).rar

    当一个类实现了`Comparable`接口后,其对象可以在使用了`Comparator`接口的集合类(如`TreeSet`或`TreeMap`)中自动进行自然排序。这意味着集合中的对象会按照`compareTo`方法定义的顺序进行排列。 **自定义类与...

    【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip

    当我们在`TreeSet`中存储自定义类型的对象时,若想让`TreeSet`自动按照我们的需求排序,就需要让这些对象所属的类实现`Comparable`接口。具体实现方式是在类中重写`compareTo()`方法,根据业务逻辑定义比较规则。...

    Comparable接口和Comparator接口的比较

    - 自动排序:实现了Comparable接口的类的对象可以直接使用Collections.sort()或Arrays.sort()进行排序,而不需要额外的Comparator。 - 比较规则:Comparable接口定义的是类的自然排序,而Comparator提供更灵活的比较...

    Comparable&Comparator区别

    实现此接口后,对象可以根据其实现的`compareTo`方法自动排序。 - **Comparator**提供了更大的灵活性,可以在不修改对象的情况下根据不同的标准对其进行排序。它通常用于自定义排序或需要多种排序方式的场景。 理解...

    Comparable与Comparator的区别

    当我们自定义一个类并希望它在集合(如List)中能自动排序时,就需要实现Comparable接口。通过重写`compareTo()`方法,我们可以设定对象按照哪种规则进行排序。默认的自然顺序排序就是通过`compareTo()`方法定义的。...

    Comparable和Comparator区分1

    Comparable接口是Java中用于对象排序的关键接口,主要应用于需要自动排序的场景。当一个类实现了Comparable接口,意味着该类的对象具备内在的比较逻辑,可以直接进行比较。例如,我们可以创建一个Person类,让它实现...

    Java中Comparable和Comparator 2种实现方式学习

    当你创建一个类并希望其对象能够在集合如`ArrayList`或`TreeSet`中自动排序时,只需让该类实现`Comparable`接口。例如,如果你有一个`Person`类,你可以这样实现: ```java public class Person implements ...

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

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

    通过接口排序

    当你有一个自定义类型的数据类,并且希望在集合(如ArrayList、LinkedList或TreeSet等)中进行自然排序时,你需要让这个类实现`Comparable`接口。`compareTo()`方法用于比较当前对象与传入的对象,返回值决定了排序...

    浅谈Java中常用数据结构的实现类Collection和M

    这使得TreeMap的元素总是按特定顺序排列,可以是自然排序(键的Comparable接口实现)或自定义排序(通过Comparator提供)。查找、插入和删除的速度稍慢于HashMap,但提供了有序性。 3. LinkedHashMap:...

    Java语言程序设计ppt第十四章(抽象类和接口)

    使用 ActionListener 接口实现对象对动作事件的监听 ActionListener 接口是一个接口,它只有一个抽象方法 `actionPerformed`,这个方法用于响应用户动作。ActionListener 接口可以被多个类实现,每个类可以实现多个...

    java 按对象属性排序

    1. **Comparable接口**: Java中的`Comparable`接口定义了`compareTo()`方法,用于比较对象的顺序。当我们需要对一个类的对象进行自然排序时,可以实现这个接口。例如,在`User`类中,如果我们有一个`age`属性,...

    java中集合排序

    - **Comparable接口**:所有实现了`Comparable`接口的类都可以进行比较。这个接口定义了一个`compareTo()`方法,用于比较当前对象与其他对象的大小。例如,`String`、`Integer`等类都默认实现了`Comparable`接口,...

    java 对象 排序

    首先,Java中的对象排序主要涉及到两个核心概念:Comparable接口和Comparator接口。当需要对一个类的对象进行排序时,有两种基本策略: 1. **实现Comparable接口**: - 如果一个类的对象需要被排序,那么这个类...

    JAVA集合类.pdf

    在Java中,对于实现Comparable接口的类,对象会自动支持自然排序。比如,Integer类就实现了Comparable接口,它的compareTo()方法会根据数值大小进行比较。所以,当你向TreeSet添加Integer对象时,TreeSet会调用这些...

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    本次我们关注的是Java集合框架中的三类接口:List、Set和Map,以及如何实现它们的特定功能,特别是关于`TreeSet`和`TreeMap`的按值排序。标题中提到的“JCF(List、Set、Map)学习,实现了,value&gt;按value排序”是一个...

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

    Map中的键通常是可比较的,实现了Comparable接口的类的实例可以作为键,这样Map可以根据键的自然顺序进行排序。例如,使用TreeMap时,如果不提供Comparator,键将按照其天然顺序排序。 **5. 集合排序** Java集合...

Global site tag (gtag.js) - Google Analytics