java 中的 Comparable 和 Comparator 与 Iterable 和 Iterator
Comparable 和 Comparator
Comparable 和 Comparator 是两个关系不大的类,其分别侧重于不同的方面。
其中,接口 Comparable<T> 强行对实现它的每个类的对象进行整体排序。
这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
Date dt = new Date();
// 默认计算从标准时间为止的毫秒数,也可以指定初始时间
Date dt2 = new Date(2222L);
// -1 表示小于,0表示等于,1表示相等
System.out.println(dt.compareTo(dt2)); // 1
对于接口 Comparator<T> ,则实现了一个比较函数,
List<Integer> lt = new ArrayList<>();
lt.add(2);
lt.add(8);
lt.add(3); lt.sort((t1, t2) -> t1 < t2 ? 1 : (t1.equals(t2) ? 0 : -1)); /*lt.sort(new Comparator<Integer>() {*/
/* @Override*/
/* public int compare(Integer t1, Integer t2) {*/
/* return t1 < t2 ? 1 : (t1.equals(t2) ? 0 : -1);*/
/* }*/
/*});*/ System.out.println(lt);
Iterable 和 Iterator
接口 Iterable<T> 实现这个接口允许对象成为 "foreach" 语句的目标。
注意:由于 java中没有 Array类,所以数组中没有实现 Iterable 接口,但是它可以使用 foreach方式遍历。
而其核心方法就是 iterator ,该方法的返回值为 Iterator<T> 对象。通过Iterator 对象的hasNext()与 next() 方法实现遍历。
从某种角度来说,foreach 是 iterator的简单语法糖(一种形式):
List<Integer> lt = new ArrayList<>(4);
lt.add(2);
lt.add(9);
lt.add(3); for (int i : lt) {
System.out.println(i);
} Iterator<Integer> itor = lt.iterator();
while (itor.hasNext()) {
Integer i = itor.next();
System.out.println(i);
}
注意:当直接使用 iterator 时,注意在 while方法体内不能调用对集合调用任何 modify形式的方法 (如 add,remove,clear 等方法),否则抛出 ConcurrentModificationException 异常,但是可以调用 iterator 对象的本身的 remove方法。
foreach 同理,但可以在只使用 while 遍历,而不使用 iterator的循环中使用 modify形式的方法。
java 中的 Comparable 和 Comparator 与 Iterable 和 Iterator的更多相关文章
- 【软件构造】(转)Java中的comparable和comparator
为了方便阅读和复习,转载至此,原地址:温布利往事的博客 阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Co ...
- 来吧,一文彻底搞懂Java中的Comparable和Comparator
大家好,我是沉默王二,今天在逛 programcreek 的时候,我发现了一些专注细节但价值连城的主题.比如说:Java 的 Comparable 和 Comparator 是兄弟俩吗?像这类灵魂拷问 ...
- Java基础系列-Comparable和Comparator
原创文章,转载请标注出处:<Java基础系列-Comparable和Comparator> 一.概述 Java中的排序是由Comparable和Comparator这两个接 ...
- Java基础之Comparable与Comparator
Java基础之Comparable与Comparator 一.前言: Java中实现对对象的排序一般情况下主要有以下两种实现方式(万物皆对象嘛): 对象所在的类实现Comparable 接口 定义比较 ...
- Java中的Comparable<T>和Comparator<T>接口
有的时候在面试时会被问到Comparable<T>和Comparator<T>的区别(或者Java中两种排序功能的实现区别). 1) 在使用普通数组的时候,如果想对数据进行排序 ...
- Java中的comparable接口和Comparator接口的区别
一.comparable和Comparator的区别 1.Comparable和Comparator都是用来实现集合中元素的比较.排序的. 2.Comparable是在类内部定义的方法实现的排序,位于 ...
- Java学习之Comparable与Comparator的区别
Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序 ...
- java比较排序Comparable和Comparator
1 比较排序Comparable和Comparator 1.1 接口作用说明 Comparable和Comparator都是用来实现对象的比较.排序,对比时需要实现Compara ...
- java中Comparatable接口和Comparator接口的区别
1.不同类型的排序规则 .自然排序是什么? 自然排序是一种升序排序.对于不同的数据类型,升序规则不一样: BigDecimal BigInteger Byte Double Float Int ...
随机推荐
- javaScript系列 [06]-javaScript和this
在javaScript系列 [01]-javaScript函数基础这篇文章中我已经简单介绍了JavaScript语言在函数使用中this的指向问题,虽然篇幅不长,但其实最重要的部分已经讲清楚了,这篇文 ...
- SSE图像算法优化系列二十九:基础的拉普拉斯金字塔融合用于改善图像增强中易出现的过增强问题(一)
拉普拉斯金字塔融合是多图融合相关算法里最简单和最容易实现的一种,我们在看网络上大部分的文章都是在拿那个苹果和橙子融合在一起,变成一个果橙的效果作为例子说明.在这方面确实融合的比较好.但是本文我们主要讲 ...
- SSE图像算法优化系列二十:一种快速简单而又有效的低照度图像恢复算法。
又有很久没有动笔了,主要是最近没研究什么东西,而且现在主流的趋势都是研究深度学习去了,但自己没这方面的需求,同时也就很少有动力再去看传统算法,今天一个人在家,还是抽空分享一个简单的算法吧. 前段日子在 ...
- .NET 同步与异步 之 EventWaitHandle(Event通知) (十三)
本随笔续接:.NET 同步与异步 之 Mutex (十二) 在前一篇我们已经提到过Mutex和本篇的主角们直接或间接继承自 WaitHandle: Mutex类,这个我们在上一篇已经讲过. Event ...
- 单片机成长之路(51基础篇) - 008 C51 的标示符和关键字
标准 C 语言定义了 32 个关键字,如下表(ANSI C的32个关键字): C51在此基础上针对单片机功能进行了扩展,详情见下表(C51编译器扩充关键字): C 51的数据类型 51单片机使用的C语 ...
- Android App 安全的HTTPS 通信
漏洞描述 对于数字证书相关概念.Android 里 https 通信代码就不再复述了,直接讲问题.缺少相应的安全校验很容易导致中间人攻击,而漏洞的形式主要有以下3种: 自定义X509TrustMana ...
- VS2017打开VS2010项目报 “找不到*.xaml”错误
VS2017打开VS2010项目报 “找不到*.xaml”错误.详细如下: 未处理System.IO.IOExceptionMessage: “System.IO.IOException”类型的未经处 ...
- Linksys WRT610n V2 刷ddwrt后安装entware-ng,使用opkg
安装步骤很简单,首先启用usb.jffs.等. 然后: mkdir -p /jffs/opt mount -o bind /jffs/opt /opt wget -O - http://pkg.ent ...
- WebViewJavascriptBridge 进行js 与native通信。
1, iOS端加载web页面.开启日志并给webView建立JS与OC的桥梁 - (void)viewWillAppear:(BOOL)animated { if (_bridge) { retur ...
- 安防工程商必须知道的PoE供电真相
问题一:何为PoE技术? PoE (Power Over Ethernet)指的是在现有的以太网Cat.5布线基础架构不作任何改动的情况下,在为一些基于IP的终端(如IP电话机.无线局域网接入点AP. ...