/** * 从类集中找到前几个元素,组成新的类集再返回。 <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; }