Java——类比较器

1、Product类

 1 public class Product
 2 {
 3     private int pid;
 4     private String name;
 5     private double price;
 6
 7     public Product()
 8     {
 9         // TODO Auto-generated constructor stub
10     }
11
12     public Product(int pid, String name, double price)
13     {
14         this.pid = pid;
15         this.name = name;
16         this.price = price;
17     }
18
19     public int getPid()
20     {
21         return pid;
22     }
23
24     public void setPid(int pid)
25     {
26         this.pid = pid;
27     }
28
29     public String getName()
30     {
31         return name;
32     }
33
34     public void setName(String name)
35     {
36         this.name = name;
37     }
38
39     public double getPrice()
40     {
41         return price;
42     }
43
44     public void setPrice(double price)
45     {
46         this.price = price;
47     }
48
49 }

2、类比较器:重写compare方法

 1 public class MyCompare implements Comparator<Product> // 泛型<Product>表示该比较器只能比较Product类型
 2 {
 3
 4     @Override
 5     public int compare(Product p1, Product p2)
 6     {
 7         if (p1.getPrice() < p2.getPrice())
 8         {
 9             return -1;
10         }
11         else if (p1.getPrice() > p2.getPrice())
12         {
13             return 1;
14         }
15         else
16         // 如果价格一样,按照id排序
17         {
18             if (p1.getPid() < p2.getPid())
19             {
20                 return -1;
21             }
22             else if (p1.getPid() > p2.getPid())
23             {
24                 return 1;
25             }
26             else
27             {
28                 return 0;
29             }
30         }
31     }
32
33 }

3、在ArrayList中使用比较器

 1 public class ProductSort
 2 {
 3     public static void main(String[] args)
 4     {
 5
 6                 Product p1 = new Product(1, "爆米花手机", 1000000.00);
 7         Product p2 = new Product(2, "iPhone 7s", 5088.00);
 8         Product p3 = new Product(3, "小米5s", 1999.99);
 9         Product p4 = new Product(4, "NIIT课程", 12800.00);
10         Product p5 = new Product(5, "百达翡丽", 1980000.00);
11         Product p6 = new Product(6, "宝玛electric", 1999.99);
12         Product p7 = new Product(7, "TIIN课程", 12800.00);
13                 // 获得数组准备排序
14         Product[] proArr = { p1, p2, p3, p4, p5, p6, p7 };
15
16         Arrays.sort(proArr, new MyCompare());
17
18         for (Product p : proArr)
19         {
20             System.out.println(p.getPid() + " " + p.getName() + " "
21                     + p.getPrice());
22         }
23     }
24 }    
时间: 2024-10-05 18:51:10

Java——类比较器的相关文章

jvm系列(一):java类的加载机制

java类的加载机制 原文:http://www.cnblogs.com/ityouknow/p/5603287.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个

Java类的定义及其实例化

如果你不了解类和对象的概念,请猛击这里:Java类和对象的概念 类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public class Dog{ String name; int age; void bark(){  // 汪汪叫 System.out.println("汪汪,不要过来"); } void hungry(){  // 饥饿 System.out.println("主人,我饿了")

js原型对象与Java类的区别

在我学习Javascript的原型对象时,我总是不自觉地拿Java的类思想来做比较,时间久了,我渐渐认识到二者有巨大的不同. 首先,类是不能直接当方法来运行,它最简便的方式是调用其静态方法:而原型对象本身就是一个方法体,它可以直接运行.二者在构造对象的过程中,js可以扮演两种角色,一个可以将原型对象当方法来使用,才接触js时,都是以这种形式来使用,即万物皆方法体,像c;另一个是模仿面向对象的特性,为原型对象定义属性,运用构造器时,将构造器构造的对象的指针指通过原型链指向原型对象的属性,从而实现面

Java类的设计----Object 类

Object类 Object类是所有Java类的根父类如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类 public class Person { ... } 等价于: public class Person extends Object {. ... }例: method(Object obj){-}//可以接收任何类作为其参数 Object o=new Person; method(o); ==操作符与equals方法 ==操作符与equals方法的区别: =

java类的生命周期

类的生命周期:加载.连接(验证.准备.解析).初始化.使用.卸载主动引用(有且只有)初始化: 1.new.getstatic.putstatic.invokestatic如果类没初始化,则初始化new关键字实例化对象.读取或设置一个类的静态字段(被final修饰.*已在编译期把结果放入常量池的静态字段除外).调用一个类的静态方法  2.使用java.lang.reflect包的方法对类进行发射调用的时候,如果类没有进行过初始化,则初始化 3.当初始化一个类的时候,父类没初始化,则初始化 4.当虚

Java —类和对象

类和对象 类是对象的类型,是具有相同的属性和方法的一组对象的集合. 定义类 访问修饰符 class 类名 { 数据类型 属性名: 访问修饰符 返回值类型 方法名 {} } 创建对象:类名 对象名 = new 类名(); 使用对象:引用对象的属性:对象名.属性名;引用对象的方法:对象名.方法名(); 可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立. 成员变量和局部变量 成员变量:在类中定义,描述对象将要有什么.可以在本类的方法或其他类的方法中使用.java会给成员变量一个初始

Eclipse或MyEclipse没有在java类文件上显示Spring图标的问题

Eclipse或MyEclipse没有在java类文件上显示接口图标的问题解决办法: 前: 后:

Java类的生命周期详解

引言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大多只是告诉你“怎样做”,但至于“为什么这样做”却不多说,所以造成大家在基础和原理方面的知识比较匮乏,所以笔者今天就斗胆来讲一下这个问题,权当抛砖引玉,希望对在这个问题上有疑惑的朋友有所帮助,文中有说的不对的地方,也希望各路高手前来指正. 首先来了解一下jvm(java虚拟机)中的几个比较重要的内存区域,这几

jsp页面应用Java类

两种方法将Java类应用到jsp页面中: 1. <jsp:useBean id="类实例名字" class="具体的类" scope="page/request/session/application" /><jsp:setProperty name="id的值" property="参数名" value="参数值" />//或者多个参数直对<jsp:get