请问有没有 java list 进行 filter orderby 字段模糊匹配 字段大于小于 大于等于 分页 之类的 一个通用的方法
看下如有帮助给个采纳谢谢
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class ListUtils {
public static <T> List<T> filterAndSort(List<T> list,
String keyword,
String orderBy,
boolean isAsc,
int pageNumber,
int pageSize) {
List<T> filteredList = list.stream()
.filter(item -> item.toString().contains(keyword)) // 模糊匹配
.filter(item -> isGreaterOrEqual(item, keyword)) // 大于等于
.filter(item -> isLessOrEqual(item, keyword)) // 小于等于
.collect(Collectors.toList());
Comparator<T> comparator = Comparator.comparing(Object::toString);
if (orderBy.equals("desc")) {
comparator = comparator.reversed(); // 倒序排序
}
filteredList.sort(isAsc ? comparator : comparator.reversed());
int totalItems = filteredList.size();
int fromIndex = (pageNumber - 1) * pageSize;
int toIndex = Math.min(fromIndex + pageSize, totalItems);
return filteredList.subList(fromIndex, toIndex);
}
private static boolean isGreaterOrEqual(Object item, String keyword) {
// 根据需要自定义判断逻辑
return true;
}
private static boolean isLessOrEqual(Object item, String keyword) {
// 根据需要自定义判断逻辑
return true;
}
public static void main(String[] args) {
// 测试
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("pear");
list.add("orange");
list.add("kiwi");
list.add("grape");
List<String> filteredList = filterAndSort(list, "a", "asc", true, 1, 2);
System.out.println(filteredList);
}
}