All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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