文档章节

Java List 实现排序的简单方法

SuShine
 SuShine
发布于 2015/06/25 15:27
字数 519
阅读 10
收藏 0

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;
        }
      }
    });
  }






  
  1. public class PriceHighToLowComparator implements Comparator<ItemBean> { 
  2.  
  3.     @Override 
  4.     public int compare(ItemBean itemBean1, ItemBean itemBean2) { 
  5.          
  6.         double price1 = 0
  7.         double price2 = 0
  8.          
  9.         if(itemBean1.getItemPrice() != null && !"".equals(itemBean1.getItemPrice())){ 
  10.             price1 = Double.parseDouble(itemBean1.getItemPrice()); 
  11.         } 
  12.          
  13.         if(itemBean2.getItemPrice() != null && !"".equals(itemBean2.getItemPrice())){ 
  14.             price2 = Double.parseDouble(itemBean2.getItemPrice()); 
  15.         } 
  16.          
  17.         if(price1 > price2){ 
  18.             return -1
  19.         } 
  20.         else if(price1 < price2){ 
  21.             return 1
  22.         } 
  23.         else
  24.             return 0
  25.         } 
  26.     } 
  27.  

  然后就是各种改返回值,反复改了三次以后发现问题所在,返回值不正确,上面的这个类是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即可。

本文转载自:http://blog.csdn.net/sfshine/article/details/23447171

共有 人打赏支持
SuShine
粉丝 123
博文 491
码字总数 141753
作品 0
朝阳
后端工程师
数据库中间件 Sharding-JDBC 源码分析 —— 结果归并

摘要: 原创出处 http://www.iocoder.cn/Sharding-JDBC/result-merger/ 「芋道源码」欢迎转载,保留摘要,谢谢! 本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2. MergeEngine 2.1 Selec...

芋道源码
2017/10/29
0
0
java8 (一):为神马要学习java8?

java8新特性 1.1 新特性介绍: 简而言之,java8的新特性就是:Lamdba函数(匿名函数),流,默认方法。 Java8 的灵活使用,会使得代码可读性更好(前提是你的同事也使用,别人不会,你强行使...

AHUSKY
07/14
0
0
Criteria 和 DetachedCriteria 的主要区别《摘录》

Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的,所 以它是由 Hibernate Session 进行创建的;而 DetachedCriteria 是离线的,创建时无需 Session,Det...

西行侠客
2014/04/10
0
0
第二章 一节spring-core之comparator深入解读

前言 本章节深入讲解spring的comparator,使用与细节,帮助大家在项目里面正确使用comparator。源码解读无法通过文字很详细的解释,诠释。需要读者多次阅读,深入理解,组织逻辑,大脑慢慢形成...

鸟菜啊
04/18
0
0
java中关于Map的九大问题

通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的。下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题。 0、将Map转换为List类型 在java中Map接口提供了三...

LCZ777
2014/08/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

驰狼课堂

http://www.chilangedu.com/

求是科技
15分钟前
0
0
jumpserver 报错"Incorrect string value

申明 本文所有内容参考自jumpserver记录命令无法入库问题 #1773 简介 jumpserver 1.4.0在jumpserver.log中大量报错,错误日志 File "/opt/jumpserver/apps/terminal/api.py", line 246, i...

zhnxin
21分钟前
2
0
用户管理相关配置文件及命令

9月19日任务 2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理 3.3 用户管理 扩展知识 实用小工具 简单命令行下实现Linux/Windows文件互传 前提:使用远程工具Xsh...

robertt15
40分钟前
0
0
presto 架构

presto 介绍 是Facebook开源的,完全基于内存的并⾏计算,分布式SQL交互式查询引擎 是一种Massively parallel processing (MPP)架构,多个节点管道式执⾏ ⽀持任意数据源(通过扩展式Connect...

张欢19933
40分钟前
0
0
Ajax技术应用

1. 相关概述 1. ajax:即异步js与xml,可以实现客户端与服务端之间数据的异步交互。对于普通的B/S 模式是采用的同步方式,即一次请求必须等待一次服务器响应完成,而异步则是客户端发送请求后...

江左煤郎
40分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部