当前位置: 首页 > news >正文

哈尔滨房地产网站建设html网站开发语言

哈尔滨房地产网站建设,html网站开发语言,宁德市地图,永久免费无代码开发平台转载自 简单介绍Java中Comparable和ComparatorComparable 和 Comparator是Java核心API提供的两个接口#xff0c;从它们的名字中#xff0c;我们大致可以猜到它们用来做对象之间的比较的。但它们到底怎么用#xff0c;它们之间有又哪些差别呢#xff1f;下面有两个例子可以…转载自 简单介绍Java中Comparable和ComparatorComparable 和 Comparator是Java核心API提供的两个接口从它们的名字中我们大致可以猜到它们用来做对象之间的比较的。但它们到底怎么用它们之间有又哪些差别呢下面有两个例子可以很好的回答这个问题。下面的例子用来比较HDTV的大小。看完下面的代码相信对于如何使用Comparable和Comparator会有一个更加清晰的认识。 Comparable 一个实现了Comparable接口的类可以让其自身的对象和其他对象进行比较。也就是说同一个类的两个对象之间要想比较对应的类就要实现Comparable接口并实现compareTo()方法代码如下 class HDTV implements ComparableHDTV {private int size;private String brand;public HDTV(int size, String brand) {this.size size;this.brand brand;}public int getSize() {return size;}public void setSize(int size) {this.size size;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand brand;}Overridepublic int compareTo(HDTV tv) {if (this.getSize() tv.getSize())return 1;else if (this.getSize() tv.getSize())return -1;elsereturn 0;} }public class Main {public static void main(String[] args) {HDTV tv1 new HDTV(55, Samsung);HDTV tv2 new HDTV(60, Sony);if (tv1.compareTo(tv2) 0) {System.out.println(tv1.getBrand() is better.);} else {System.out.println(tv2.getBrand() is better.);}} } 输出结果 Sony is better. Comparator 在一些情况下你不希望修改一个原有的类但是你还想让他可以比较Comparator接口可以实现这样的功能。通过使用Comparator接口你可以针对其中特定的属性/字段来进行比较。比如当我们要比较两个人的时候我可能通过年龄比较、也可能通过身高比较。这种情况使用Comparable就无法实现因为要实现Comparable接口其中的compareTo方法只能有一个无法实现多种比较。 通过实现Comparator接口同样要重写一个方法compare()。接下来的例子就通过这种方式来比较HDTV的大小。其实Comparator通常用于排序。Java中的Collections和Arrays中都包含排序的sort方法该方法可以接收一个Comparator的实例比较器来进行排序。 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator;class HDTV {private int size;private String brand;public HDTV(int size, String brand) {this.size size;this.brand brand;}public int getSize() {return size;}public void setSize(int size) {this.size size;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand brand;} }class SizeComparator implements ComparatorHDTV {Overridepublic int compare(HDTV tv1, HDTV tv2) {int tv1Size tv1.getSize();int tv2Size tv2.getSize();if (tv1Size tv2Size) {return 1;} else if (tv1Size tv2Size) {return -1;} else {return 0;}} }public class Main {public static void main(String[] args) {HDTV tv1 new HDTV(55, Samsung);HDTV tv2 new HDTV(60, Sony);HDTV tv3 new HDTV(42, Panasonic);ArrayListHDTV al new ArrayListHDTV();al.add(tv1);al.add(tv2);al.add(tv3);Collections.sort(al, new SizeComparator());for (HDTV a : al) {System.out.println(a.getBrand());}} } 输出结果 Panasonic Samsung Sony 以上代码就实现了通过自定义一个比较器Comparator来实现对一个列表进行排序。 我们也经常会使用Collections.reverseOrder()来获取一个倒序的Comparator。例如 ArrayListInteger al new ArrayListInteger(); al.add(3); al.add(1); al.add(2); System.out.println(al); Collections.sort(al); System.out.println(al);ComparatorInteger comparator Collections.reverseOrder(); Collections.sort(al,comparator); System.out.println(al); 输出结果 [3,1,2] [1,2,3] [3,2,1] 如何选择 简单来说一个类如果实现Comparable接口那么他就具有了可比较性意思就是说它的实例之间相互直接可以进行比较。 通常在两种情况下会定义一个实现Comparator类。 1、如上面的例子一样可以把一个Comparator的子类传递给Collections.sort()、Arrays.sort()等方法用于自定义排序规则。2、用于初始化特定的数据结构。常见的有可排序的SetTreeSet和可排序的MapTreeMap下面通过这两种方式分别创建TreeSet。 使用Comparator创建TreeSet class Dog {int size;Dog(int s) {size s;} }class SizeComparator implements ComparatorDog {Overridepublic int compare(Dog d1, Dog d2) {return d1.size - d2.size;} }public class ImpComparable {public static void main(String[] args) {TreeSetDog d new TreeSetDog(new SizeComparator()); // pass comparatord.add(new Dog(1));d.add(new Dog(2));d.add(new Dog(1));} } 这里使用的就是Comparator的第二种用法定义一个Comparator的子类重写compare方法。然后在定义HashSet的时候把这个类的实例传递给其构造函数。这样再使用add方法向HashSet中增加元素的时候就会按照刚刚定义的那个比较器的逻辑进行排序。使用Comparable创建TreeSet class Dog implements ComparableDog{int size;Dog(int s) {size s;}Overridepublic int compareTo(Dog o) {return o.size - this.size;} }public class ImpComparable {public static void main(String[] args) {TreeSetDog d new TreeSetDog();d.add(new Dog(1));d.add(new Dog(2));d.add(new Dog(1));} } 这里定义TreeSet的时候并没有传入一个比较器。但是使用add方法向HashSet中增加的对象是一个实现了Comparable的类的实例。所以也能实现排序功能。
http://www.huolong8.cn/news/482978/

相关文章:

  • 新丰县建设局网站购买国外服务器
  • 台州营销型网站建设wordpress表白模板下载
  • 开发公司法人和项目负责人质量安全责任制度seo软件代理
  • 怎么做提升网站转化率做网站现在什么尺寸合适
  • 专业做网站多少钱wordpress安全插件下载
  • 怎样创建自己公司网站哪个网站代做ppt便宜
  • 南京市住房建设网站上饶市建设监督网站
  • 建设银行 企业网站网龙网络公司游戏
  • 临沂seo整站优化厂家wordpress视频付费
  • 网站登录界面模板网站 营销方案
  • 沙漠风网站建设怎么样城乡建设管理局网站
  • 江华县网站开发手机h5页面制作软件
  • 专业做设计的网站成都住建局官网查房源
  • 大型网站技术架构核心原理与案例分析网站快速优化排名app
  • 推广做网站电话温州建站软件
  • 做网站企业经营范围最近发生的军事重大新闻
  • 深圳网站建设html5企业网站模板
  • 手表电商网站展示网站开发
  • 陕西省建设厅官方网站网站建设合同属于技术服务么
  • 不需要网站备案的空间网上注册公司流程图
  • 网站建设的会计分录初学者网站建设
  • 一个网站两个域名百度商桥安装方法电商网站建设阿里云
  • 局网站建设方案word网站首页设计总结
  • 网站建设公司怎么挣钱网络优化器免费
  • 做淘宝内部优惠券网站要钱么常州市做网站的公司
  • 点图片跳到网站怎么做的做程序的软件
  • 做关于灯饰的网站中学网站模板
  • 哪个网站做美食好一点做汽配的都上什么网站
  • 找权重高的网站方法徐州seo推广公司
  • 网站开发与软件开发windows做网站的工具