java比较器

 1 package com.sun;
 2
 3 public class ComparatorDemo implements Comparable<ComparatorDemo> {
 4
 5     private String name;
 6     private Integer age;
 7     private float score;
 8
 9     public ComparatorDemo(String name, Integer age, float score) {
10         super();
11         this.name = name;
12         this.age = age;
13         this.score = score;
14     }
15
16     @Override
17     public String toString() {
18         return "name:" + name + ";age:" + age + ";score:" + score;
19     }
20
21     @Override
22     public int compareTo(ComparatorDemo o) {
23         if (this.score > o.score)// score是private的,为什么能够直接调用,这是因为在Student类内部
24             return -1;// 由高到底排序
25         else if (this.score < o.score)
26             return 1;
27         else {
28             if (this.age > o.age)
29                 return 1;// 由底到高排序
30             else if (this.age < o.age)
31                 return -1;
32             else
33                 return 0;
34         }
35     }
36
37     public String getName() {
38         return name;
39     }
40
41     public void setName(String name) {
42         this.name = name;
43     }
44
45     public Integer getAge() {
46         return age;
47     }
48
49     public void setAge(Integer age) {
50         this.age = age;
51     }
52
53     public float getScore() {
54         return score;
55     }
56
57     public void setScore(float score) {
58         this.score = score;
59     }
60
61 }
 1 package com.sun;
 2
 3 import java.util.ArrayList;
 4 import java.util.Arrays;
 5 import java.util.Collections;
 6 import java.util.List;
 7
 8 public class ComparatorTest {
 9
10     public static void main(String[] args) {
11         List<ComparatorDemo> lists = new ArrayList<>();
12         lists.add(new ComparatorDemo("a", 4, 4));
13         lists.add(new ComparatorDemo("b", 3, 6));
14         lists.add(new ComparatorDemo("c", 2, 3));
15         lists.add(new ComparatorDemo("d", 1, 7));
16         Collections.sort(lists);
17         for (ComparatorDemo comparatorDemo : lists) {
18             System.out.println("++++++" + comparatorDemo);
19         }
20
21         ComparatorDemo com[] = {new ComparatorDemo("a", 4, 4),
22                 new ComparatorDemo("b", 3, 6),
23                 new ComparatorDemo("c", 2, 3),
24                 new ComparatorDemo("d", 1, 7)};
25         Arrays.sort(com);
26         for (ComparatorDemo comparatorDemo : com) {
27             System.out.println("------" + comparatorDemo);
28         }
29     }
30 }
时间: 2024-10-23 00:57:38

java比较器的相关文章

java比较器Comparable接口和Comaprator接口

java的比较器有两类,分别是Comparable接口和Comparator接口. 在为对象数组进行排序时,比较器的作用非常明显,首先来讲解Comparable接口. 让需要进行排序的对象实现Comparable接口,重写其中的compareTo(T o)方法,在其中定义排序规则,那么就可以直接调用java.util.Arrays.sort()来排序对象数组,实例如下: class Student implements Comparable<Student>{ private String n

Java 比较器的用法

第一次写博客,正好在回顾Java的时候用到了比较器,记录一下使用的方法. Java比较器多用于对象数组的排序,主要用到comparable和comparator接口 1.使用comparable接口 首先将需要实现排序对象的类实现comparable接口,实现后覆写comparaTo(T other)方法,在comparaTo方法中写出比较规则,最后调用java.utils.Arrays.sort()方法传入需要比较的对象数组即可排序. 测试如下: 1 import java.util.Arra

java比较器Comparator 使用

PresonDemo package cn.stat.p5.person.demo; public class PresonDemo implements Comparable { private String name; private int age; /** * @param args */ public String getName() { return name; } public void setName(String name) { this.name = name; } publ

java比较器 之compareable 和comparato比较

compareable 测试类import java.util.Set; import java.util.TreeSet; public class Test { public static void main(String[] args) { Set<Person>allset = new TreeSet<Person>(); allset.add(new Person(22,"hjw",20000.0,"论语",50.0)); alls

JAVA比较器:Comparable和Comparator

一.Comparable接口 1.public interface Comparable{ public int compareTo(Object other); } 2.当本对象小于.等于或大于other对象时,相应返回一个小于.等于或大于0的值. 3.若对象不可比较,抛出ClassCastException 4.compareTo()定义的顺序是类的自然顺序,即此排序对类的对象来说是最自然的. 5.equals()定义一种自然相等关系,两个对象相等,返回ture. 6.许多类:String.

java比较器Comparable接口和Comaprator接口的比较

Comparable接口:让自定义的对象具有比较规则 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; /* * Comparable接口:让自定义的对象具有比较规则 * * */ public class ComparableDemo { public static void main(String[] args) { ArrayList<Student> list =

Java 比较器

比较器 Arrays 类 主要功能: 完成所有与数组有关的操作的工具类 二分查找: 在一个有序的数字序列中进行二分查找 public static int binarySearch(数据类型 [] a , 数据类型 key) 案例实现 public class TestDemo { public static void main(String [] args) throws ParseException { int date [] = new int [] {1,4,2,5,7,4,3,8} ;

java比较器的复用

博客主页:http://blog.csdn.net/minna_d 设想这么一种场景:A有N个字段,也有专门对A的比较函数.每一次比较函数,在N多个业务线复用. 那么,问题来了, 突然有一天A多加了一个字段in,而且在原一特定场景中这个字段比其它所有字段的优先级都应该高.在其它场景中又没有影响. 该怎么解决这个问题? 1. 重写原有的所有的Comparator类,重写它们的compare方法.这种方法代价太大,因为N多地方需要 if...else 2. 只正对特定场景新增一个组合之前的compa

java常用类详细介绍及总结:字符串相关类、日期时间API、比较器接口、System、Math、BigInteger与BigDecimal

一.字符串相关的类 1.String及常用方法 1.1 String的特性 String:字符串,使用一对""引起来表示. String声明为final的,不可被继承 String实现了Serializable接口:表示字符串是支持序列化的. 实现了Comparable接口:表示String可以比较大小 String内部定义了final char[] value用于存储字符串数据 String:代表不可变的字符序列.简称:不可变性. 体现: 当对字符串重新赋值时,需要重写指定内存区域赋