package com.cattong.commons.util;
import java.util.Iterator;
import java.util.List;
public class ListUtil {
public static <T> boolean isEmpty(List<T> list) {
return list == null || list.size() == 0;
}
public static <T> boolean isNotEmpty(List<T> list) {
return list != null && list.size() > 0;
}
/*
* 默认list的排序为倒序, T支持equal方法
*/
public static <T> List<T> truncate(List<T> list, T max, T since) {
if (isEmpty(list)) {
return list;
}
if (max != null) {
list = truncateFromHead(list, max);
}
if (since != null) {
list = truncateFromTail(list, since);
}
return list;
}
public static <T> List<T> truncateFromHead(List<T> list, T max) {
if (isEmpty(list) || max == null) {
return list;
}
T temp = null;
int hitPos = -1;
int length = list.size();
for (int i = 0; i < length; i++) {
temp = list.get(i);
if (max.equals(temp)) {
hitPos = i;
break;
}
}
while (hitPos > -1) {
list.remove(0);
hitPos--;
}
return list;
}
public static <T> List<T> truncateFromTail(List<T> list, T since) {
if (isEmpty(list) || since == null) {
return list;
}
Iterator<T> iterator = list.iterator();
T temp = null;
boolean isExist = false;
while (iterator.hasNext()) {
temp = iterator.next();
isExist = (isExist || temp.equals(since));
if (isExist) {
iterator.remove();
}
}
return list;
}
}