java内存分页和自定义排序

1,java内存分页

import java.util.List;

/**
 * 
 * @Description: 对列表进行内存分页
 * 
 * @author: leiming
 * @date:2019年4月9日 上午11:12:54
 */
public class MemoryPagination {

  /**
   * 当前页号
   */
  private Integer pageNum = 1;

  /**
   * 页面大小
   */
  private Integer pageSize = 10;

  /**
   * 总记录数
   */
  private Integer totalCount;

  /**
   * 当前页面记录数
   */
  private Integer sizes;

  /**
   * 页数
   */
  private Integer pages;

  /**
   * 截取的数据开始位置
   */
  private int startPos;

  /**
   * 截取数据结束位置
   */
  private int endPos;

  /**
   * 数据列表
   */
  private List<?> data;

  /**
   * 构造器
   * 
   * @param pageNum 页号
   * @param pageSize 页面大小
   * @param dataList 需要分页的数据列表
   */
  public MemoryPagination(Integer pageNum, Integer pageSize, List<?> dataList) {
    super();
    this.data = dataList;
    this.totalCount = dataList.size();
    if (pageSize != null) {
      // 默认页面大小为10
      this.pageSize = pageSize > 0 ? pageSize : 10;
    }
    this.pages = (int) Math.ceil((double) totalCount / this.pageSize);
    if (pageNum != null) {
      // 默认第一页
      this.pageNum = pageNum > 0 ? ((pageNum > pages && pages > 0) ? pages : pageNum) : 1;
    }
    int remainingCount = this.totalCount - ((this.pageNum - 1) * this.pageSize);
    this.sizes = remainingCount > this.pageSize ? this.pageSize : remainingCount;
      //将分页后得到的数据赋予data
    setData();
  }

  public Integer getPageNum() {
    return pageNum;
  }

  public Integer getPageSize() {
    return pageSize;
  }

  public Integer getTotalCount() {
    return totalCount;
  }

  public Integer getSizes() {
    return sizes;
  }

  public Integer getPages() {
    return pages;
  }
  
  public void setStartPos() {
    this.startPos = (pageNum - 1) * pageSize;
  }

  public void setEndPos() {
    this.endPos = (pageNum * pageSize) > totalCount ? totalCount : (pageNum * pageSize);
  }
  //设置为私有防止外部直接调用
  private void setData() {
    setStartPos();
    setEndPos();
    this.data = data.subList(startPos, endPos);;
  }

  public List<?> getData() {
    return data;
  }

}

2,java排序

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
 * @Description: java排序
 * 
 * @author: leiming
 * @date:2019年4月9日 上午9:56:54
 */
public class SortUtils {

  private final static Logger logger = LoggerFactory.getLogger(LogicalSort.class);

  /**
   * 排序字段
   */
  private static String field = "";

  /**
   * 升序或降序
   */
  private static String order = "";

  /**
   * 对List<Map>进行排序
   * 
   * @param data 数据集合
   * @param field 排序字段
   * @param order 排序方式
   */
  public static void mapSort(List<Map<String, String>> data, String field, String order) {
    if (field == null || field.isEmpty()) {
      logger.info("排序字段为空");
      return;
    }
    if (data.size() == 0) {
      logger.info("排序列表为空");
    }
    LogicalSort.field = field;
    LogicalSort.order = order;
      //调用Collections的sort方法实现排序,
    Collections.sort(data, new Comparator<Map>() {
        /**
         *  根据生命Map类型,重写compare方法
         *  其中 return v1.compareTo(v2)为升序
         *      return v2.compareTo(v1)为降序。
         */
      @Override
      public int compare(Map o1, Map o2) {
        String v1 = o1.get(LogicalSort.field).toString().toLowerCase();
        String v2 = o2.get(LogicalSort.field).toString().toLowerCase();
        if (LogicalSort.order.equals("desc")) {
          return v2.compareTo(v1);
        } else {
          return v1.compareTo(v2);
        }
      }
    });
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值