Java List 实现排序的简单方法
2014-04-11 15:06
741 查看
private void sortDatas() { Collections.sort(mAllprogramdata, new Comparator<PairProgram>() { public int compare(PairProgram arg0, PairProgram arg1) { if (arg0.fav > arg1.fav) { return -1; } else if (arg0.fav == arg1.fav) { return 0; } else { return 1; } } }); }
public class PriceHighToLowComparator implements Comparator<ItemBean> { @Override public int compare(ItemBean itemBean1, ItemBean itemBean2) { double price1 = 0; double price2 = 0; if(itemBean1.getItemPrice() != null && !"".equals(itemBean1.getItemPrice())){ price1 = Double.parseDouble(itemBean1.getItemPrice()); } if(itemBean2.getItemPrice() != null && !"".equals(itemBean2.getItemPrice())){ price2 = Double.parseDouble(itemBean2.getItemPrice()); } if(price1 > price2){ return -1; } else if(price1 < price2){ return 1; } else{ return 0; } } }
然后就是各种改返回值,反复改了三次以后发现问题所在,返回值不正确,上面的这个类是list的价格从高到低的规则类,Collections.sort(List list, Comparator c) 会根据返回值来对list中的数据进行排序,最初如果price1>price2,则return 1,但是试验发现list中的数据无变化,随后改成return -1,试验发现list中的数据能按照预想的效果排序了,可是新的问题出来了,为什么price1>price2,但是要返回-1呢?
继续google之,发现http://solodu.iteye.com/blog/630891 这篇文章的主人在文章结尾说了一段话“要充分理解排序就必须先理解最后的return 0, -1 , 1 这三个数字代表的含义。它们不是代表数字而是代表前面和后面要比较的值哪个大哪个小?如果是0表示要比较的这两个数字相等。如果是1表示前面数字大,如果-1表示前面数字小。要理解这个就没问题了。”但是结合我自己写的这个排序规则,我突然觉得0,1,-1这三个数好像不是说谁大谁小,而是一个排序的问题,当返回-1时,前面的变量(即price1)排在后面的变量(price2)的前面,反之则排在后面。果真如此么,正好就着这次的项目的排序要求比较多,也就多写几个规则测试一下,结果确实如此,根据不同规则,如果想将前面的变量放到后面的变量之前,则返回-1即可。
相关文章推荐
- java Collections.sort()实现List排序的默认方法和自定义方法
- java Collections.sort()实现List排序的默认方法和自定义方法
- java简单实现双色球彩票模拟实例(数组、排序、方法、随机数、键盘输入)
- java实现List中对象排序的方法
- java中利用List的subList方法实现对List分页(简单易学)
- JAVA中Collections.sort()实现List排序的公共方法和自定义方法
- Java Collections.sort()实现List排序的默认方法和自定义方法
- 最简单的对Java List列表按中文拼音排序的实现方式
- java Collections.sort()实现List排序的默认方法和自定义方法
- 最简单的对Java List列表按中文拼音排序的实现方式
- java Collections.sort()实现List排序的默认方法和自定义方法
- 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: [java] view plain copy /** * 根据ord
- 快速排序Java实现--最简单的实现方法
- java Collections.sort()实现List排序的默认方法和自定义方法
- java Collections.sort()实现List排序的默认方法和自定义方法
- Java简单实现几种常见排序方法
- java Collections.sort()实现List排序的默认方法和自定义方法
- java Collections.sort()实现List排序的默认方法和自定义方法
- java Collections.sort()实现List排序自定义方法
- Java对List进行排序的两种实现方法