/**
* Java分页逻辑
*/
@Test
public void testJavaPaging() {
// 这种删除、新增,不会报错
List<Integer> objList = new ArrayList<>();
objList.add(123);
objList.add(123);
objList.add(123);
objList.add(123);
Long page = 4L;
Long size = 2L;
// 这种list,新增、删除节点会报错
// List<Integer> objList = Arrays.asList(1,2,13,4,15,6,17,8,19,20);
// objList.add(123);
// List<String> objList = Arrays.asList("1,2,13,4,15,6,17,8,19,20".split(","));
List<Integer> pagingList7 = captureListByPageAndSizeJava7(objList, page.intValue(), size.intValue());
List<Integer> pagingList8 = captureListByPageAndSizeJava8(objList, page, size);
System.out.println("Java7分页[captureListByPageAndSizeJava7]: = " + pagingList7);
System.out.println("Java8分页[captureListByPageAndSizeJava8]: = " + pagingList8);
}
/**
* Java8-分页:
* integers: 1,2,13,4,15,6,17,8,19
* 第3页,每页2个 =》 跳过 (3-1)*2 个,取2个
* 改造成 泛型
* @param list 需要分页的List
* @param page 页码
* @param size 每页大小
* @return
*/
private static <T> List<T> captureListByPageAndSizeJava8(List<T> list, Long page, Long size) {
return list.stream().skip((page - 1) * size).limit(size).collect(Collectors.toList());
// return list.stream().skip((page-1) * size).limit(size).collect(Collectors.toList());
}
/**
* Java7-分页
* @param list 需要分页的List
* @param page 页码
* @param size 每页大小
* @return
*/
private static <T> List<T> captureListByPageAndSizeJava7(List<T> list, Integer page, Integer size) {
List<T> result = new ArrayList<>();
Integer totalCount = page * size;
Integer startIndex = totalCount - size;
Integer endIndex = list.size() < totalCount ? list.size() : totalCount;
if (startIndex > list.size()) {
return result;
} else {
return list.subList(startIndex, endIndex);
}
}
// 排序后的结果集
// 优先最高排序的放在后面,优先级最低的放在最前面
List<Model> sortedResultList = resultList.stream()
.sorted(Comparator.comparing(a -> a.getParam1()))
.sorted(Comparator.comparing(a -> a.getParam2()))
.sorted(Comparator.comparing(a -> a.getParam3()))
.sorted(Comparator.comparing(a -> a.getParam4()))
.sorted(Comparator.comparing(a -> a.getParam5()))
.sorted(Comparator.comparing(a -> a.getParam6(), Comparator.reverseOrder()))
.collect(Collectors.toList());