
io.github.icodegarden.commons.lang.util.CollectionUtils Maven / Gradle / Ivy
package io.github.icodegarden.commons.lang.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* @author Fangfang.Xu
*
*/
public abstract class CollectionUtils {
/**
* 这是个环形截取工具,不会越界
* 从fromIndex开始往后再取maxNum个
*
* @param
* @param elements
* @param fromIndex 包含该位置
* @param maxNum 最多截取个数,如果元素个数是10,maxNum是20,最多只返回10个
* @return
*/
public static List nextElements(List elements, int fromIndex, int maxNum) {
fromIndex = fromIndex < 0 ? 0 : fromIndex;
fromIndex = Math.min(fromIndex, elements.size());
maxNum = Math.min(maxNum, elements.size());
/**
* 直接满足索引位置
*/
if (fromIndex + maxNum <= elements.size()) {
return elements.subList(fromIndex, fromIndex + maxNum);
}
/**
* 截到末尾,恰好满足
*/
List subList1 = elements.subList(fromIndex, elements.size());
if (subList1.size() == maxNum) {
return subList1;
}
/**
* 截到末尾,但不够,再从头开始截一段
*/
List subList2 = elements.subList(0, maxNum - (elements.size() - fromIndex));
ArrayList arrayList = new ArrayList(maxNum);
arrayList.addAll(subList1);
arrayList.addAll(subList2);
return arrayList;
}
/**
* 安全截取,不会越界
* @param
* @param elements
* @param fromIndex
* @param maxNum
* @return
*/
public static List subSafely(List elements, int fromIndex, int maxNum) {
fromIndex = fromIndex < 0 ? 0 : fromIndex;
fromIndex = Math.min(fromIndex, elements.size());
maxNum = Math.min(maxNum, elements.size());
/**
* 直接满足索引位置
*/
if (fromIndex + maxNum <= elements.size()) {
return elements.subList(fromIndex, fromIndex + maxNum);
}
/**
* 截到末尾
*/
return elements.subList(fromIndex, elements.size());
}
/**
* 每个String转byte[],并把集合转数组
* 不会去重
*
* @param values
* @return
*/
public static byte[][] toBytesArray(Collection values) {
List vBytes = values.stream().map(v -> v.getBytes()).collect(Collectors.toList());
byte[][] vBytesArray = vBytes.toArray(new byte[vBytes.size()][]);
return vBytesArray;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy