8.13.2 TreeSet实现Comparable接口的两种方式

推荐使用第二种方式,编写比较器可以使数据类的程序耦合度降低,同时比较器也可以重复利用!

第一种方式:数据类实现Comparable接口,实现其中的compareTo方法

创建对象时,使用TreeSet的默认构造函数!

SortedSet users = new TreeSet();

class User implements Comparable{

//String name;

int age;

User(int age){

this.age = age;

}

public String toString(){

return "User[age="+age+"]";

}

//实现java.lang.Comparable;接口中的compareTo方法

//该方法程序员负责实现,SUN提供的程序已经调用了该方法.

//需求:按照User的age排序

public int compareTo(Object o){

//编写一个比较规则.

int age1 = this.age;

int age2 = ((User)o).age;

return age2-age1;

}

}

第二种方式:单独编写一个实现Comparator接口的比较器,实现其中的compare方法

创建对象时,使用TreeSet的构造函数传入比较器!

SortedSet products = new TreeSet(new Comparator()

class ProductComparator implements Comparator{

//需求:按照商品价格排序

public int compare(Object o1, Object o2){

double price1 = ((Product)o1).price;

double price2 = ((Product)o2).price;

if(price1==price2){

return 0;

}else if(price1>price2){

return 1;

}else{

return -1;

}

}

}

时间: 2024-10-10 22:22:52

8.13.2 TreeSet实现Comparable接口的两种方式的相关文章

android回调接口的两种方式

熟悉MS-Windows和X Windows事件驱动设计模式的开发人员,通常是把一个方法的指针传递给事件源,当某一事件发生时来调用这个方法(也称为“回调”).Java的面向对象的模型目前不支持方法指针,似乎不能使用这种方便的机制. 但是java本身拥有interface,我们可以用interface实现相同的效果.在android中,如果我们需要对一个button的点击事件往外传,可以有两种实现方式. 第一种方式的大体步骤是: 1.定义一个回调接口,用来捕捉和“存放”点击事件. public i

java调用CXF WebService接口的两种方式

通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();        // 判断是否抛出异常        factory.getOutInterceptors().add(new LoggingInIntercept

java调用matlab函数接口的两种方案

Java 调用matlab 函数接口 Java调用matlab函数接口有两种方式: l 一种是通过matlab把函数打成jar包: l 一种是把matlab编译成dll后,用C++再封装成java能支持的数据类型的dll. 注意:不论用这两种方式中的哪一种,最终部署时都需要matlab环境(MCR,在matlab安装路径下有). 1. 方式一:matlab直接打jar包 1.1. 利用matlab自带工具打jar包 1.1.1. 建立jar包 在matlab的Commond Window中输入d

JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序

一.描述 自定义的类要按照一定的方式进行排序,比如一个Person类要按照年龄进行从小到大排序,比如一个Student类要按照成绩进行由高到低排序. 这里我们采用两种方式,一种是使用Comparable接口:让待排序对象所在的类实现Comparable接口,并重写Comparable接口中的compareTo()方法,缺点是只能按照一种规则排序. 另一种方式是使用Comparator接口:编写多个排序方式类实现Comparator接口,并重写新Comparator接口中的compare()方法,

jsp中 RequestDispatcher接口的两种跳转:forward()和include()

在web程序中,经常是由多个Servlet来完成请求.RequestDispatcher接口就是为了多个Servlet之间的调整而实现的.该接口可以用httpSerbletRequest的getRequestDispatcher()方法取得.调用时指定跳转的URL地址即可完成跳转动作.RequestDispatcher接口有两种方法实现跳转 一.include方法 本示例不需要前台页面,直接通过地址访问. IncludeMethod.java代码 1 package com.gys; 2 3 i

python用requests和urllib2两种方式调用图灵机器人接口

最近从网上看见个有意思的图灵机器人,可以根据不同的信息智能回复,比如你发送一个"讲个笑话",它就会给你回复一个笑话,或者"北京天气"就可以回复天气情况,或者英文单词然后给你回复中文释义.官方文档中有php和java的调用方式,我就弄个python的吧. 注册获取API KEY 这一步很简单,直接注册一个账号就可以看到你的API KEY.这个KEY我们以后发送get请求的时候需要用到. Pythoh调用示例 掉用也比较简单,主要是模拟post 请求.然后解析 json

Python 实现接口类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)

实现接口类的两种方式 方式一 from abc import ABCMeta from abc import abstractmethod class BaseMessage(metaclass=ABCMeta): @abstractmethod def send(self,subject,body,to,name): pass 方式二 class BaseMessage(object): def send(self, subject, body, to, name): raise NotImp

api暴露的接口有两种方法

接口检测是否正常,可以使用测试工具 postman insomnia 注意! express中一个路由 即 一个接口 api暴露的接口有两种方法 一.使用模板进行暴露,但要将数据做字符串转化,然后使用ejs的非转义输出 router.get('/',function(req,res,next){ res.render('main'{ //main 路由 mine:JSON.stringify({ ret:true, 认证权限 username:'ni hao' }) }) }) 二.使用json

动态调用WebService接口的几种方式

一.什么是WebService? 这里就不再赘述了,想要了解的====>传送门 二.为什么要动态调用WebService接口? 一般在C#开发中调用webService服务中的接口都是通过引用过来就行调用的,步骤如下: 1.找到引用,右击添加服务引用,找到高级,添加web引用,添加之后就可以直接调用里面的方法. 以上这种方法是最简单粗暴的一种方式.当然在开发中总是不那么如意,以上方式是在本机直接可以访问服务的地址,假如在本机不能直接访问WebService,那么就会有些蛋疼. 这种方式就不可取了