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

无锡网站网站建设门户网站有哪些类型

无锡网站网站建设,门户网站有哪些类型,网站专题制作,佛山品牌网站设计制作目录 引言: 一、认识接口 1.1 Comparable 1.2 Comparator ​编辑 1.3 核心概念对比 二、代码实现对比 2.1 Comparable 实现示例 2.2 Comparator 实例示例 三、核心区别详解 3.1 设计理念差异 3.2 方法调用 3.3 使用情景 四、本质区别总结 引言&#x…

目录

引言:

一、认识接口

1.1 Comparable

1.2 Comparator

​编辑

1.3 核心概念对比

二、代码实现对比

2.1 Comparable 实现示例

2.2 Comparator 实例示例

三、核心区别详解

3.1 设计理念差异

3.2 方法调用

3.3 使用情景

四、本质区别总结


引言:

在 Java 开发中,对象的比较是常见的需求。Java 给我们提供了两个接口 Comparable 与 Comparator 接口,这两个接口的核心功能是定义对象之间的比较规则。但是二者的使用规则和环境又有所不同,接下来让我们一同来了解其所在差异。


一、认识接口

我们可以在 jdk-api-1.8 文档中查看这两个接口的具体实现:

1.1 Comparable


1.2 Comparator


1.3 核心概念对比

特性ComparableComparato
包位置java.langjava.util
核心方法compareTo(T o)compare(T o1, T o2)
排序类型自然比较定制比较
多比较策略不支持支持多个
影响原类需要修改类不修改原类
使用场景默认比较规则特殊比较需求

二、代码实现对比

2.1 Comparable 实现示例

让对象具备自我比较能力。换句话说就是:自己和别人比

class Person implements Comparable<Person> {String name;int age;public Person(String name, int age) {this.name = name;this.age = age;}// 自然比较:按年龄@Overridepublic int compareTo(Person other) {// 比较规则可以自己规定return Integer.compare(this.age, other.age);/*retutn this.age - other.age;这样定义比较规则也是可以的,但存在一个潜在风险需要特别注意当比较值非常大时(接近Integer.MAX_VALUE或Integer.MIN_VALUE),减法运算可能导致整数溢出*/}
}public class Test {public static void main(String[] args) {// 实例化对象并直接比较Person alice = new Person("Alice", 25);Person bob = new Person("Bob", 30);int result = alice.compareTo(bob);System.out.println("年龄比较结果:" + interpretResult(result));}private static String interpretResult(int result) {if (result < 0) return "Alice比Bob年轻";else if (result > 0) return "Alice比Bob年长";return "两人同龄";}
}// 执行结果:  年龄比较结果:Alice比Bob年轻


2.2 Comparator 实例示例

通过外部比较器灵活比较。换句话说就是:你妈妈拿你和别人家的孩子比(学习成绩、听不听话、做不做家务……)

import java.util.Comparator;// 独立比较器类(按姓名)
class NameComparator implements Comparator<Person> {@Overridepublic int compare(Person p1, Person p2) {return p1.name.compareTo(p2.name);}
}public class Test2 {public static void main(String[] args) {// 实例化对象并使用比较器Person Tom = new Person("Tom", 28);Person Sam = new Person("Sam", 22);// 使用具体比较器Comparator<Person> nameComp = new NameComparator();int nameResult = nameComp.compare(Tom, Sam);System.out.println("姓名比较结果:" + (nameResult < 0 ? "Tom在Sam之前" : "Tom在Sam之后"));// 匿名内部类比较器Comparator<Person> ageComp = new Comparator<Person>() {@Overridepublic int compare(Person p1, Person p2) {return Integer.compare(p1.age, p2.age);}};int ageResult = ageComp.compare(Tom, Sam);System.out.println("年龄比较结果:" + (ageResult < 0 ? "Tom更年轻" : "Tom更年长"));}
}// 执行结果:
// 姓名比较结果:Tom在Sam之后
// 年龄比较结果:Tom更年长


三、核心区别详解

3.1 设计理念差异

  • Comparable 

    对象自身实现比较逻辑,如同“自我认知”:
    Temperature t1 = new Temperature(25.5);
    Temperature t2 = new Temperature(30.0);
    t1.compareTo(t2); // 温度计自己知道如何比较
  • Comparator

    外部策略定义比较规则,如同“第三视角”:
    Product iphone = new Product("Phone", 9999.99);
    Product XiaoMi = new Product("XiaoMi", 1999.99);PriceComparator priceJudge = new PriceComparator();
    priceJudge.compare(iphone, XiaoMi); // 外部比较器裁决价格高低

3.2 方法调用

// Comparable调用方式
objA.compareTo(objB);  // 对象A主动比较对象B// Comparator调用方式
comparator.compare(objA, objB);  // 比较器独立比较两个对象

3.3 使用情景

  • 选择 Comparable :

    1. 对象有明显的自然顺序(如日期、温度……)
    2. 需要作为默认比较规则
     
  • 选择 Comparator :

    1. 需要多种比较方式
    2. 无法修改类源码(如第三方库的类)
    3.需要临时比较规则

四、本质区别总结

对比维度ComparableComparator
比较主体对象自身具备比较能力第三方执行比较
代码侵入性需要修改类结构无需修改原类
比较视角第一人称( this  vs  other )第三人称(旁观者观察两个对象)
方法调用obj1.compareTo(obj2)comparator.compara(obj1,obj2)
设计理念内聚性(比较逻辑属于对象本身)多比较策略

积跬步,以致千里

http://www.dtcms.com/a/421873.html

相关文章:

  • 网站建设难做吗可以做热图的在线网站
  • 佛山做网站优化公司襄阳机械加工网
  • 做瞹瞹嗳免费网站在线观看网站文字特效
  • 人和动物做的电影网站南通市住房城乡建设局网站
  • 网站设计基本要求上海公布最新情况
  • 仪征网站建设公司宿迁百度seo
  • 广州网站车管所辽宁专业网页设计免费建站
  • 网站浮动代码南宁 建网站 公司
  • 赣州行业网站建设5566网址大全设首页
  • 无锡网站建设外贸徐州哪有做网站的
  • 南昌网站设计跨境网站
  • 做网站需要的公司php网站微信支付怎么做
  • 做网站设计是什么专业Wordpress哪个模板最快
  • wordpress 字符集 404漳州seo网站快速排名
  • 厦门网站开发公司怎么设置网站的关键字
  • 商务网站建设网站开发ac域名的网站有啥不同
  • jquery+js网站模板免费下载几级分销属于合法
  • c2c代表网站是什么长春网站建设设计
  • 精美网站建设公司网站的制作步骤包括
  • 甘肃省住房和城乡建设部网站首页深圳网站建设微信商城开发
  • 自己做的相册网站网络培训机构
  • 广州做网站厉害的公司wordpress 悬浮 登录
  • 电子版简历word格式沈阳优化网站公司
  • 寺院网站模板wordpress链接网页位置
  • 男子替人做网站网站wordpress优化网站打开速度
  • 中小型网站设计哪家好长春seo关键字排名优化
  • 百度网站如何做仿站多少钱
  • wordpress如何才能自己登陆进入自己的网站 进行修改呢wordpress 安装 数据库
  • 宠物网站开发背景中江移动网站建设
  • asp 公司网站网页制作与网站建设试题和答案