English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
разбивка java ArrayList на страницы
общее описание
взаимодействие между системами, как правило, происходит в виде интерфейсов. Предположим, что система B предоставляет интерфейс пакетного запроса, ограничивающий возможность запроса 50 данных за один раз, а на самом деле нам нужно запросить 500 данных, в этом случае можно выполнить операцию разбивки на страницы для этих 500 данных, сделав 10 вызовов пакетного интерфейса системы B.
если интерфейс запроса системы B использует List в качестве входного параметра, то для реализации вызова по批次 можно использовать метод subList ArrayList для обработки.
код
определение метода sublist:
List<E> subList(int fromIndex, int toIndex);
достаточно точно вычислить fromIndex и toIndex.
подготовка данных
public class TestArrayList { public static void main(String[] args) { List<Long> datas = Arrays.asList(new Long [] {1L,2L,3L,4L,5L,6L,7L}); } }
алгоритм разбивки на страницы
import java.util.Arrays; import java.util.List; public class TestArrayList { private static final Integer PAGE_SIZE = 3; public static void main(String[] args) { List<Long> datas = Arrays.asList(new Long [] {1L,2L,3L,4L,5L,6L,7L,8L}); //Общее количество записей Integer totalCount = datas.size(); //How many times to process Integer requestCount = totalCount / PAGE_SIZE; for (int i = 0; i <= requestCount; i++) { Integer fromIndex = i * PAGE_SIZE; //If the total number is less than PAGE_SIZE, toIndex uses totalCount directly to prevent array out of bounds int toIndex = Math.min(totalCount, (i + 1) * PAGE_SIZE); List<Long> subList = datas.subList(fromIndex, toIndex); System.out.println(subList); //When the total number is less than one page or exactly one page, you can exit the for loop after handling once if (toIndex == totalCount) { break; } } } }
Тестовая сцена
1、总数不足一页
2、总数刚好等于一页
3、总数多余一页
Upper three cases can pass normally.
Спасибо за чтение,希望能帮助到大家,谢谢大家对本站的支持!