Guava学习总结之- 3 - Basic Utilities - Ordering
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Guava学习总结之- 3 - Basic Utilities - Ordering,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1533字,纯文字阅读大概需要3分钟。
内容图文
Guava 的 Ordering 可以说是更加强大的Java comparator, Ordering本身就是一个继承于Comparator的接口, 但是它还支持一些基于Comparator的操作例如 reverse, max, min, 它甚至还可以通过不同Ordering之间的组合或者链接(用Decorate的模式)完成更加强大的排序功能。
创建
有四种比较常见的(静态)创建方式
-
nature() 用对象本身的compareTo()方法来进行比较
-
usingToString() 通过传入对象的toString() 方法得到一个String值,然后对string值进行 String.compareTo()进行比较
-
from(Comparator) 直接从现有的Comparator 得到Ordering 对象
4. 通过自定义的方式:
Ordering < String > byLengthOrdering = new Ordering < String >() {
public int compare ( String left , String right ) {
return Ints . compare ( left . length (), right . length ());
}
};
改变比较顺序的操作
-
reverse() 比较使用倒序。
-
nullsFirst() 移动所有的null 对象至排序队列的开头
-
nullsLast() 移动所有的null 对象至排序队列的队尾
Ordering 的组合
-
Ordering<Foo> ordering = Ordering.natural().nullsFirst();
用这种方式组合的Ordering, 必须是从右边向左边执行, 例如上例比较的时候是先把所有的NULL 值移动到开头, 然后在对那些非NULL的对象用nature()方式排序。
2. compound
Ordering 本身提供了一个compound方法来对两个不同的可以是自定义的Ordering进行组合操作,例如
我们定义了两个Ordering 实例, 一个用来按照城市人口级别来排序的,一个是按照城市大小级别来排序的。 Ordering.from(cityByPopulation).compound(cityBySize); 那么这个新的组合的Ordering会先根据人口级别排序, 对于那些人口级别相同的城市,再会按照城市大小级别排序。 这种方式是从左向右执行的。 所以Google建议在使用第一种方式组合的时候最好不要使用第二种方式。
其他有用的方法
-
List<E> greatestOf(Iterable<E> iterable, int k) 找出给定集合中,按照Ordering排序最大的N个值。 对应的还有leastOf方法
-
isOrdered(Iterable) 判断给定集合是后按当前制定Ordering排序的
-
sortedCopy(Iterable) 返回给定集合的排序集合版本(ArrayList)
-
min(E, E, E....), max(E,E,E...) 在给定的对象中找出当前指定Ordering的值小的或者值大的对象
-
min(Iterator), max(Iterator) 在给定集合中找出当前指定Ordering的值小的或者值大的对象
原文:http://545979.blog.51cto.com/535979/1545924
内容总结
以上是互联网集市为您收集整理的Guava学习总结之- 3 - Basic Utilities - Ordering全部内容,希望文章能够帮你解决Guava学习总结之- 3 - Basic Utilities - Ordering所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。