`
i拾贝
  • 浏览: 30027 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java中Comparable接口

    博客分类:
  • java
阅读更多

java中Comparable接口

 

所有可以排序的类,都实现了java.lang.Comparable接口。

Comparable中只有一个方法:

int conpareTo(T o)

 

返回0,表示this == obj

返回正数,表示this > obj

返回负数,表示this < obj

BasicContainer2.java

import java.util.*;

public class BasicContainer2 {
    public static void main(String[] args) {
		List l1 = new LinkedList();
		l1.add(new Name("Karl","M"));
		l1.add(new Name("Steven","Lee"));
		l1.add(new Name("John","O"));
		l1.add(new Name("Tom","M"));
		System.out.println(l1);//[Karl M, Steven Lee, John O, Tom M]
		
		//调用sort方法排序
		//排序之前必须重写compaerTo比较大小,否则无效
		Collections.sort(l1);
		System.out.println(l1);//[Steven Lee, Karl M, Tom M, John O]
		
    }
}

//实现Comparable接口
class Name implements Comparable {
    private String firstName,lastName;
    public Name(String firstName, String lastName) {
        this.firstName = firstName; this.lastName = lastName;
    }
    public String getFirstName() {  return firstName;   }
    public String getLastName() {   return lastName;   }
    public String toString() {  return firstName + " " + lastName;  }
    
    public boolean equals(Object obj) {
	    if (obj instanceof Name) {
	        Name name = (Name) obj;
	        return (firstName.equals(name.firstName))
	            && (lastName.equals(name.lastName));
	    }
	    return super.equals(obj);
		}
		
	public int hashCode() {
		return firstName.hashCode();
	}
		
	//改写Comparable的compareTo方法	
	public int compareTo(Object o) {
		Name n = (Name)o;
		//调用String类的compareTo方法,比较大小
		int lastCmp = lastName.compareTo(n.lastName);
		//lastCmp,首先按照姓(lastName)排列,然后按照名(fisrtName)排列
		return (lastCmp!=0 ? lastCmp : firstName.compareTo(n.firstName));
	}
		
}

 

F:\java>javac BasicContainer2.java
注: BasicContainer2.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

F:\java>java BasicContainer2
[Karl M, Steven Lee, John O, Tom M]
[Steven Lee, Karl M, Tom M, John O]

F:\java>

 

分享到:
评论

相关推荐

    浅析Java中comparator接口与Comparable接口的区别

    对于自定义类,如`Person`,如果想要支持排序,你需要在`Person`类中实现Comparable接口,并重写`compareTo(Person another)`方法,根据类的属性(如姓名、年龄)来定义比较规则。 而Comparator接口则不同,它不在...

    java,Comparable接口实例

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

    Comparable接口和Comparator使用示例

    Comparable 接口是 Java 中的一个接口,它提供了一个通用的比较机制,允许对象之间进行比较。实现 Comparable 接口的类可以使用 Arrays.sort() 方法对其对象数组进行排序。 在上面的示例代码中,我们定义了一个 ...

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

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

    comparator接口与Comparable接口的区别

    Comparator接口与Comparable接口是Java语言中两个重要的接口,它们都是用于比较和排序自定义类的对象的大小的。虽然它们两个都是用于比较的接口,但是它们有着不同的实现方式和应用场景。 相同之处:Comparator接口...

    java中Comparable和Comparator的区别

    Comparable接口位于java.lang包中,它只有一个方法:compareTo(Object o)。任何实现了Comparable接口的类,其实例都可以进行自然排序。自然排序指的是根据类的业务逻辑定义的排序规则。例如,String类就实现了...

    Java中Comparable和Comparator的区别

    例如,Java中的String、Integer等类都实现了Comparable接口,这使得我们可以直接使用这些对象进行自然顺序的比较。当我们需要按照特定规则对类实例进行排序时,只需要在自定义类中实现Comparable接口,并重写`...

    Java8HashMap键与Comparable接口编程开

    Comparable接口是Java中用于定义对象之间自然顺序的接口,它只有一个方法`compareTo(T o)`,用于比较当前对象与指定对象的大小关系。当一个类实现了Comparable接口,那么它的实例就可以进行排序,比如在集合框架中...

    java中实现Comparable接口实现自定义排序的示例

    Comparable 接口是 Java 中的一个接口,它定义了一个compareTo 方法,该方法用于比较两个对象的大小。该接口通常用于实现自定义排序的需求。 在我们的示例中,我们定义了一个 Student 类,该类实现了 Comparable ...

    Comparable接口实现字符串比较大小排序的简单实例

    java通过Comparable接口实现字符串比较大小排序的简单实例

    面向对象技术Java期末复习试卷(三).pdf

    - Java中Comparable接口用于定义对象之间的自然排序关系。 4. Java类和接口: - Java接口是一系列方法的声明,可以被类实现(implement)。接口中通常不包含方法的实现。 - Java类可以实现一个或多个接口,通过...

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

    在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要方式。这篇文章将深入探讨这两种实现方式及其在实际编程中的应用。 首先,`Comparable`接口位于`java.lang`包下...

    详解Java中Comparable和Comparator接口的区别

    * 一个类实现了Comparable接口,就意味着“该类本身支持排序”,它可以直接通过Arrays.sort() 或 Collections.sort()进行排序。 * (02) "Comparator" * 它是一个比较器接口,包括两个函数:compare() 和 equals...

    对比Java中的Comparable排序接口和Comparator比较器接口

    例如,Java中的String、Integer等内置类都实现了Comparable接口,可以方便地进行比较和排序。当你有一个实现了Comparable接口的对象列表或数组时,可以直接使用Collections.sort()或Arrays.sort()对其进行排序。...

    java排序Comparator和Comparable

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

    Java中interface接口的作用

    当用户触发某个事件时,会调用监听器接口中定义的方法。这种方式提高了代码的可读性和可复用性。 此外,Java标准库中的`java.util.Comparator`和`java.lang.Comparable`接口是两个常见的示例。`Comparator`用于比较...

    java比较器Comparable接口与Comaprator接口的深入分析

    Java中的比较器主要涉及到两种接口:Comparable接口和Comparator接口,它们在处理对象排序时起着关键作用。 **Comparable接口** Comparable接口是Java.lang包下的一个接口,它只有一个方法:compareTo(T o)。当一个...

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

    `Comparable`接口是Java中一个重要的接口,它定义了一个`compareTo()`方法。任何类如果实现了`Comparable`接口,就表明该类的实例可以进行比较。例如,`String`类已经实现了`Comparable`,所以我们可以直接比较两个...

    java的Comparator和Comparable.docx

    在 Java 中,Comparator 和 Comparable 是两个非常重要的接口,它们用于对象的排序操作。这两个接口都是在 java.util 包中定义的,主要用于定制排序规则。 **一、Comparator 接口** Comparator 接口允许我们创建...

Global site tag (gtag.js) - Google Analytics