/**
* 从类集中找到前几个元素,组成新的类集再返回。 <br/>
* 1. 如果想要的元素个数超过了类集的大小,则返回该类集中的所有元素组成的类集 <br/>
* 2. 原类集对象不会被修改<br/>
* 3. 返回ArrayList,它可能为empty,但不会是null<br/>
*
* @param list
* @param elementCount
* 想要的元素个数; 如果个数不是正数,则返回空list
* @return
*/
public static <T> ArrayList<T> selectTopElements(List<T> list,
int elementCount) {
ArrayList<T> resultList = new ArrayList<T>();
if (list == null) {
return resultList;
}
if (elementCount <= 0) {
return resultList;
}
List<T> subList = list.subList(0, Math.min(list.size(), elementCount));
resultList.addAll(subList);
return resultList;
}
/**
* 从类集的指定下标开始取一定个数的元素<br/>
* 0. 如果取10个,但只剩5个,则返回5个元素组成的类集<br/>
* 1. 原类集对象不会被修改<br/>
* 2. 返回ArrayList,它可能为empty,但不会是null<br/>
*
* @author 集安 2013年10月9日下午2:21:19
* @param list
* @param startIndex
* 0-based,inclusive
* @param elementCount
* @return
*/
public static <T> ArrayList<T> selectElementsFrom(List<T> list,
int startIndex, int elementCount) {
ArrayList<T> resultList = new ArrayList<T>();
if (list == null) {
return resultList;
}
if (startIndex < 0) {
return resultList;
}
if (elementCount <= 0) {
return resultList;
}
if (startIndex >= list.size()) {
return resultList;
}
List<T> subList = list.subList(startIndex,
Math.min(list.size(), startIndex + elementCount));
resultList.addAll(subList);
return resultList;
}
/**
* 获取类集的某下标前的一定个数的元素<br/>
*
* 1. 原类集对象不会被修改<br/>
* 2. 返回ArrayList,它可能为empty,但不会是null<br/>
*
* @author 集安 2013年10月9日下午2:21:19
* @param list
* @param endIndex
* 0-based,exclusive
* @param elementCount
* @return
*/
public static <T> ArrayList<T> selectElementsUpTo(List<T> list,
int endIndex, int elementCount) {
ArrayList<T> resultList = new ArrayList<T>();
if (list == null) {
return resultList;
}
if (endIndex <= 0) {
return resultList;
}
if (elementCount <= 0) {
return resultList;
}
int startIndex = Math.max(0, endIndex - elementCount);
if (startIndex > list.size() - 1) {
return resultList;
}
elementCount = endIndex - startIndex;
List<T> subList = list.subList(startIndex,
Math.min(list.size(), startIndex + elementCount));
resultList.addAll(subList);
return resultList;
}