【java】实现Interface Comparable<T>接口的int compareTo(T o)方法实现对象数组或链表或集合的排序

 1 package 对象比较排序;
 2
 3 import java.util.Arrays;
 4
 5 class A implements Comparable<A>{
 6     private String name;
 7     private int age;
 8     public A(String name,int age){
 9         this.name=name;
10         this.age=age;
11     }
12     @Override
13     public int compareTo(A o) {//此方法无需手工调用,Arrays会自动调用
14         if(this.age<o.age)
15             return -1;//1.this小于返回负数,this大于返回正数,则升序;
16         if(this.age>o.age)
17             return 1;//2.this小于返回正数,this大于返回负数,则降序;
18         return 0;//相等返回0
19     }
20     @Override
21     public String toString() {
22         return "name="+name+",age="+age+"\n";
23     }
24 }
25 public class TestComparable {
26     public static void main(String[] args) {
27         A[] as=new A[]{
28                     new A("张三",63),
29                     new A("李四",33),
30                     new A("王五",53),
31                     new A("赵六",43),
32                 };
33         Arrays.sort(as);
34         System.out.println(Arrays.toString(as));
35     }
36 }

运行结果:

[name=李四,age=33
, name=赵六,age=43
, name=王五,age=53
, name=张三,age=63
]

时间: 2024-10-16 21:42:23

【java】实现Interface Comparable<T>接口的int compareTo(T o)方法实现对象数组或链表或集合的排序的相关文章

Java中的Comparable&lt;T&gt;接口

在使用普通数组的时候,如果想对数据进行排序,可以调用java.util.Arrays.sort().但要通过该方式对数组进行排序,还需要数组中的对象实现Comparable<T>接口. package org.lyk.entities; public class Book implements Comparable<Book> { static int totalCount; private String title; @Override public String toStrin

什么是Java Marker Interface(标记接口)

先看看什么是标记接口?标记接口有时也叫标签接口(Tag interface),即接口不包含任何方法.在Java里很容易找到标记接口的例子,比如JDK里的Serializable接口就是一个标记接口. 首先明确一点,Marker Interface(标记接口)决不是Java这门编程语言特有的,而是计算机科学中一种通用的设计理念. 我们看Wikipedia里对标记接口的定义. "The tag/ marker interface pattern is a design pattern in comp

Java 8 - Interface Default Method接口默认方法

Java 8 相比于Java 7 推出了几大特色(features)(接口默认方法)default methods in interface, (接口静态方法)static method in interface, 函数编程(functional programming), lamda expression, stream API. 这里首先介绍以下默认接口方法 1.什么是默认接口方法 java 8 允许在接口定义并编写实现方法.例子: interface Collection{ void ad

【java关键字-Interface】为什么接口中的属性和方法都默认为public

假设方法或属性默认为protected,它的子类也可以为protected,可能存在某种情况,导致正常访问这些属性和方法会引起错误.接口并不知道未来会被哪个类调用,所以尽量减少接口的访问权限控制,就设置权限为public.出于这种考虑,Sun公司一开始就规定,接口属性和方法默认就为public. 举例:假如IPerson接口中申明了protected String getName(),Person实现IPerson的getName()接口 package person; public inter

Java 集合类(1)--Comparable 和 Comparator的比较

Comparable 是在集合内部定义的方法实现的排序: Comparator 是在集合外部实现的排序 Comparator位于包java.util下,而Comparable位于包java.lang下 Comparable 是一个对象本身就已经支持自比较所需要实现的接口,如 String.Integer 自己就可以完成比较大小操作,已经实现了Comparable接口 Comparator 是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象

Java学习笔记--Comparable &amp; Comparator

一.    Comparable<T>: Comparable是类内部的比较器,用于创建类的时候实现此接口,同时实现比较方法:对于不能修改源码的类则无法应用此方式进行比较排序等. 源码为: 1 public interface Comparable<T> { 2 public int compareTo(T o); 3 } 可以使用如Arrays.sort(T[] a)或Collections.sort(List<T> list)来使用实现了Comparable<

黑马程序员-JAVA学习之Comparable与Comparator接口

--------android培训.java培训.期待与你交流!-------- public interface Comparator<T> 此接口提供对某个collection集合对象进行强行整体排序的比较函数.可以将 Comparator 传递给 sort() 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现自定义精确控制.还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的co

java 中的2个接口 Comparable和Comparator

像Integer.String这些类型的数据都是已经实现Comparable接口的,所以对这些类型可以直接通过Arrays.sort(...)和Collections.sort(...)方法进行排序.但是对于一些自己new出来的对象而言,如果想使用sort这种方法,必须要实现Comparable接口,这是由sort方法底层决定的,具体看一下实例: 定义一个Bean public class Employee implements Comparable{ private int age;  pri

Java学习之Comparable与Comparator的区别

Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法.Comparator位于包java.util下,而Comparable位于包   java.lang下Comparable 是一个对象本身就已经支持自比较所需要实现的接口(如 Stri