1. /**
  2. * 获取列表总页数
  3. */
  4. public static <T> int getListPages(List<T> list,int pageNum,int pageSize ){
  5. if (isNull(list)){
  6. return 0;
  7. }
  8. BaseQuery baseQuery=new BaseQuery();
  9. baseQuery.setPageNum(pageNum);
  10. baseQuery.setPageSize(pageSize);
  11. //list的大小
  12. int total = list.size();
  13. baseQuery.setTotal(total);
  14. return baseQuery.getPages();
  15. }
  16.  
  17. /**
  18. * 对列表进行分页,索引左边包括,右边不包括
  19. */
  20. public static <T> List<T> subListByPage(List<T> list,int pageNum,int pageSize ){
  21. if (isNull(list)){
  22. return Collections.emptyList();
  23. }
  24. BaseQuery baseQuery=new BaseQuery();
  25. baseQuery.setPageNum(pageNum);
  26. baseQuery.setPageSize(pageSize);
  27. //list的大小
  28. int total = list.size();
  29. //对list进行截取
  30. return list.subList(baseQuery.getStartPosition(),total-baseQuery.getStartPosition()>baseQuery.getPageSize()?baseQuery.getStartPosition()+baseQuery.getPageSize():total);
  31. }
  32.  
  33. /**
  34. * 对列表进行索引截取,索引左边包括,右边不包括
  35. */
  36. public static <T> List<T> subListByPosition(List<T> list,BaseQuery baseQuery){
  37.  
  38. if (isNull(list)){
  39. baseQuery.setTotal(0);
  40. return Collections.emptyList();
  41. }
  42. //设置列表总条数
  43. int total = list.size();
  44. baseQuery.setTotal(total);
  45.  
  46. if ((baseQuery.getStartIndex()-1)>=total){
  47. return Collections.emptyList();
  48. }
  49. //对list进行截取
  50. return list.subList(baseQuery.getStartIndex()-1,baseQuery.getEndIndex()>total?total:baseQuery.getEndIndex());
  51. }
  52.  
  53. /**
  54. *对列表字段进行比较排序
  55. */
  56. public static <T> void sortByField(List<T> dtoList,String fieldName,String order) {
  57. int compare=1;
  58. if ("desc".equals(order)){
  59. compare=-1;
  60. }
  61. int finalCompare = compare;
  62.  
  63. Collections.sort(dtoList, new Comparator<T>() {
  64. @Override
  65. public int compare(T o1, T o2) {
  66. PropertyDescriptor pd1 = null;
  67. PropertyDescriptor pd2 = null;
  68. Object value1 =null;
  69. Object value2 =null;
  70. try {
  71. pd1 = new PropertyDescriptor(fieldName, o1.getClass());
  72. value1 = pd1.getReadMethod().invoke(o1, null);
  73.  
  74. pd2 = new PropertyDescriptor(fieldName, o2.getClass());
  75. value2 = pd2.getReadMethod().invoke(o2, null);
  76.  
  77. } catch (IntrospectionException e) {
  78. e.printStackTrace();
  79. } catch (IllegalAccessException e) {
  80. e.printStackTrace();
  81. } catch (InvocationTargetException e) {
  82. e.printStackTrace();
  83. }
  84.  
  85. if (value1.getClass().equals(Double.class)){
  86. System.out.println(2);
  87. if ((Double)value1 > (Double)value2) {
  88. return finalCompare;
  89. } else if ((Double)value1 < (Double)value2) {
  90. return -finalCompare;
  91. }
  92. }else if (value1.getClass().equals(Integer.class)){
  93. System.out.println(4);
  94. if ((Integer)value1 > (Integer)value2) {
  95. return finalCompare;
  96. } else if ((Integer)value1 < (Integer)value2) {
  97. return -finalCompare;
  98. }
  99. }
  100. return 0;
  101. }
  102. });
  103. }

ListUtil常用操作的更多相关文章

  1. 【三】用Markdown写blog的常用操作

    本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...

  2. php模拟数据库常用操作效果

    test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...

  3. Mac OS X常用操作入门指南

    前两天入手一个Macbook air,在装软件过程中摸索了一些基本操作,现就常用操作进行总结, 1关于触控板: 按下(不区分左右)            =鼠标左键 control+按下        ...

  4. mysql常用操作语句

    mysql常用操作语句 1.mysql -u root -p   2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...

  5. nodejs配置及cmd常用操作

    一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...

  6. Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理

    摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■  详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...

  7. python 异常处理、文件常用操作

    异常处理 http://www.jb51.net/article/95033.htm 文件常用操作 http://www.jb51.net/article/92946.htm

  8. byte数据的常用操作函数[转发]

    /// <summary> /// 本类提供了对byte数据的常用操作函数 /// </summary> public class ByteUtil { ','A','B',' ...

  9. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

随机推荐

  1. BZOJ 3119 Book (贪心+数学推导)

    手动博客搬家: 本文发表于20191029 22:49:41, 原地址https://blog.csdn.net/suncongbo/article/details/78388925 URL: htt ...

  2. Java基础学习总结(66)——配置管理库typesafe.config教程

    Typesafe的Config库,纯Java写成.零外部依赖.代码精简.功能灵活.API友好.支持Java properties.JSON.JSON超集格式HOCON以及环境变量.它也是Akka的配置 ...

  3. HDU 4515

    刷水完毕,年月日,日日日日日日日日日日日日日日日日日日 #include <stdio.h> ,,,,,,,,,,,,}; ,M = ,D = ; int leap(int y) { == ...

  4. Tarjan算法各种&RMQ& POJ 3694

    关于tarjan 的思想可以在网上搜到,具体我也不太清楚,应该说自己理解也不深,下面是做题经验得到的一些模板. 其中有很多转载,包括BYVoid等,感谢让我转...望各路大神愿谅 有向图求连通分量的一 ...

  5. Delicious Apples (hdu 5303 贪心+枚举)

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  6. C++开发人脸性别识别教程(12)——加入性别识别功能

    经过之前几篇博客的解说,我们已经成功搭建了MFC应用框架,并实现了主要的图像显示和人脸检測程序,在这篇博文中我们要向当中加入性别识别代码. 关于性别识别,之前已经专门拿出两篇博客的篇幅来进行解说.这里 ...

  7. hibernate之7.one2many双向

    表结构 实体类关系 实体类源代码 Student package com.demo.model; import java.io.UnsupportedEncodingException; import ...

  8. Webx框架:Spring Schema 和 Spring Ext

    webx诞生的原因是当时市面上没有好用的web框架.如今的Web框架有非常多.然后它们背后的思想都是相似的,并且越来越趋同. Spring Schema 在传统的spring中,配置bean时须要手动 ...

  9. 【iOS开发-80】Quartz2D画图简单介绍:直线/圆形/椭圆/方形以及上下文栈管理CGContextSaveGState/CGContextRestoreGState

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Vpc3ViYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  10. luogu1315 观光公交

    题目大意 一个公交车在一条线上从1站.2站走到n站,站站间有距离.另有m个乘客在时间点t在a站等候要到b站.对于一个站,如果车比人早到,则车等人,如果人比车早到,则人等车(我一开始做题时把这个情况当作 ...