- 浏览: 181051 次
- 性别:
- 来自: 浙江
文章分类
最新评论
java对于集合的自定义排序方法有:
Arrays.sort(T[],Comparator<? super T> c);
Collections.sort(List<T> list,Comparator<? super T> c);
这里记录下对Comparator的自己理解。
Demo代码如下:
1.实体类代码:
class SortObj {
String letter;
int num;
public SortObj(String letter, int num) {
this.letter = letter;
this.num = num;
}
}
2.Comparator的实现代码,两个类分别为:
/**
* 字符排序(#排于最后)
*/
class StrComparator implements Comparator<SortObj> {
@Override
public int compare(SortObj o1, SortObj o2) {
if("#".equals(o1.letter) && "#".equals(o2.letter)){
return 0;
}else if("#".equals(o1.letter)){
return 1;
}else if("#".equals(o2.letter)){
return -1;
}
return o1.letter.compareTo(o2.letter);
}
}
/**
* 数字排序 (升序)
*/
class NumComparator implements Comparator<SortObj> {
@Override
public int compare(SortObj o1, SortObj o2) {
if(o1.num > o2.num){
return 1;
}else if(o1.num < o2.num){
return -1;
}else{
return 0;
}
}
}
3.调用排序并展示:
findViewById(R.id.btn_num_sort).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Collections.sort(dataNum, new NumComparator());
printInfo(dataNum);
}
});
findViewById(R.id.btn_str_sort).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Collections.sort(dataStr, new StrComparator());
printInfo(dataStr);
}
});
显示结果如下:
数字排序:
SortTest: (b,1) (r,2) (a,2) (a,3) (#,4) (#,5)
字符排序:
SortTest: (a,3) (a,2) (b,1) (r,2) (#,4) (#,5)
排序算法在compare中执行:
返回结果为3种:正整数(1),负整数(-1),0
自己对返回结果的理解(纯属自己的看法):
这个有点冒泡排序的意思,当为正整数时,交换o1与o2的位置,当为负整数时,不换位置
Arrays.sort(T[],Comparator<? super T> c);
Collections.sort(List<T> list,Comparator<? super T> c);
这里记录下对Comparator的自己理解。
Demo代码如下:
1.实体类代码:
class SortObj {
String letter;
int num;
public SortObj(String letter, int num) {
this.letter = letter;
this.num = num;
}
}
2.Comparator的实现代码,两个类分别为:
/**
* 字符排序(#排于最后)
*/
class StrComparator implements Comparator<SortObj> {
@Override
public int compare(SortObj o1, SortObj o2) {
if("#".equals(o1.letter) && "#".equals(o2.letter)){
return 0;
}else if("#".equals(o1.letter)){
return 1;
}else if("#".equals(o2.letter)){
return -1;
}
return o1.letter.compareTo(o2.letter);
}
}
/**
* 数字排序 (升序)
*/
class NumComparator implements Comparator<SortObj> {
@Override
public int compare(SortObj o1, SortObj o2) {
if(o1.num > o2.num){
return 1;
}else if(o1.num < o2.num){
return -1;
}else{
return 0;
}
}
}
3.调用排序并展示:
findViewById(R.id.btn_num_sort).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Collections.sort(dataNum, new NumComparator());
printInfo(dataNum);
}
});
findViewById(R.id.btn_str_sort).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Collections.sort(dataStr, new StrComparator());
printInfo(dataStr);
}
});
显示结果如下:
数字排序:
SortTest: (b,1) (r,2) (a,2) (a,3) (#,4) (#,5)
字符排序:
SortTest: (a,3) (a,2) (b,1) (r,2) (#,4) (#,5)
排序算法在compare中执行:
返回结果为3种:正整数(1),负整数(-1),0
自己对返回结果的理解(纯属自己的看法):
这个有点冒泡排序的意思,当为正整数时,交换o1与o2的位置,当为负整数时,不换位置
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 920使用第三方jar: autobahn-0.5.0.jar 连 ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 516我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 539Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 478先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 593相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 791参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 361图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 413参考链接:http://www.cnblogs.com/lwb ... -
解决ViewPager的addOnPageChangeListener不加载第一个的问题
2017-03-18 17:53 2581今天在使用ViewPager的时候发现个问题。 需求如下: ... -
clone方法的使用
2017-01-04 10:14 513由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2069Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 571最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 612以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 420参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 382参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1157参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2332参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 602http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 569用代码简单介绍下自定义控件的使用: 先看主activity: ... -
android使用html标签
2015-03-13 20:42 638有些时候我们需要在一个textview上,对部分字体进行特殊效 ...
相关推荐
可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组
主要介绍了JAVA使用Comparator接口实现自定义排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在...
排序按路径或任何自定义排序比较器对流中的文件进行排序安装$ npm install gulp-sort --save-dev 用法var sort = require ( 'gulp-sort' ) ;// default sortgulp . src ( './src/js/**/*.js' ) . pipe ( sort ( ) ) ...
由Comparator实现类对象负责集合元素的排序逻辑。 // 自定义比较器 class MyTreeSetCompartor implements Comparator { // 实现compare方法 @Override public int compare(Object o1, ...
1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个...
或者,可以在创建 TreeSet 时提供一个比较器(Comparator)来指定自定义的排序规则。 唯一性:TreeSet 中不允许重复元素,每个元素都必须是唯一的。如果将重复元素添加到 TreeSet 中,后面的重复元素将被忽略。 ...
如何使用 Collections 类对集合进行排序? 什么是 Comparable 和 Comparator 接口?它们有什么区别? 如何使用 ConcurrentHashMap 类来实现线程安全的映射? 如何避免在多线程环境下对同一集合的并发修改? 如何使用...
文章目录第9章Java常用类IDEA中Debug调试JDK 8之前的日期时间API(`...与传统日期处理的转换Java比较器概述Comparable自然排序举例自定义类实现Comparable自然排序使用Comparator实现定制排序System类、Math类、BigInte
易于使用的api,详细的文档和广泛的测试范围,对开发人员友好。 功能清单 选择: select , and or 排序: sort , reverse , last , first , limit , distinct , shuffle 索引: view , index , hash , ...
归一化的对象比较机制(Centralized object comparator mechanism )-自定义对象的比较,并能在排序时被排序表使用 表实用类TableUtils class - 收集一些JTable有用功能的实用类。 集合实用类ListUtils class -...
要想实现排序,目前只能通过加装一层处理(方法来自Stack Overflow,感谢大神),将key-vlaue放入ThreeMap排序,排序规则默认是字母表顺序,可自定义Comparator修改。 iteratorKeys = object.keys();//得到所有title...
使用bower install --save ubersort 内置比较器文本比较区分大小写字符串数值按数值比较自定义Array.prototype.ubersort.addComparator添加的函数(见下文)方法超级排序( sortConfig ) myArr . ubersort ( { ...
使用Comparator接口排序 自定义接口实现 forEach filter过滤删选 Predicate(准备条件) 并行处理和顺序处理 探讨Lambda是否为语法糖 语法 (1) 形参列表。如果没有参数()表示 (2) -> (3) 代码块 用Lambda语法写...
如果要自定义排序顺序,请使用Comparator界面,而不要使用默认自然排序顺序。 比较器接口仅包含一种抽象方法:compare()因此,它是功能接口。 公共int compare(obj1,obj2) 如果obj1必须在obj2之前,则返回-ve...
该类的大部分构造器和方法都已经过时,但是该类使用非常方便,因此目前使用还很普遍,该类的另一个主要功能是,在数据库操作中,它允许将毫秒值表示为SQL DATE值,是数据库操作中java.sql.Date的父类。关于数据库...
红黑树 Elixir的红黑树实现。... 可以在初始化时通过:comparator选项提供自定义比较:comparator 。 例如,假设我们要存储包含订单信息的地图,这些地图按产生的收入排序,按ID唯一。 我们将使用RedBlackTree.compare
{{ collection | orderBy: expression : reverse : caseInsensitive : comparator }} 争论 参数 类型 默认值 细节 收藏 array或object 要排序的集合或对象 表达 string或string array 确定顺序的键或键集合 反向...
Project旨在通过Lambda表达式改进Java 8中的排序,同时假装java.util.Comparator中的静态方法不存在。 排序自定义类型的集合 class Person { public Integer id; public String firstName; public String ...
数组具有随机访问特性,灵活使用数组的索引 数组有序的话,问题往往会变得简单 对于有序或局部有序的一维数组,要想到二分查找算法,并学会随机应变 对于元素特殊的数组,注意寻找特殊点,比如有序的临界点,二维数组...