Java 中 List 分片的 5 种方法
    		       		warning:
    		            这篇文章距离上次修改已过430天,其中的内容可能已经有所变动。
    		        
        		                
                在Java中,我们可以通过多种方式对List进行分片。以下是五种主要的方法:
- 使用Java 8 Stream API
- 使用Apache Commons Collections
- 使用Google Guava
- 使用手动分页
- 使用SubList方法
下面是每种方法的详细描述和示例代码:
- 使用Java 8 Stream API
import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
 
public List<List<T>> splitListToChunksWithStreamAPI<T>(List<T> list, final int chunkSize) {
    List<List<T>> chunks = new ArrayList<>();
    final int size = list.size();
 
    IntStream.range(0, size / chunkSize + 1).map(i -> i * chunkSize).forEach(i -> {
        if (i + chunkSize < size) {
            chunks.add(list.subList(i, i + chunkSize));
        } else if (i < size) {
            chunks.add(list.subList(i, size));
        }
    });
 
    return chunks;
}- 使用Apache Commons Collections
import org.apache.commons.collections4.ListUtils;
 
public List<List<T>> splitListToChunksWithApacheCommons<T>(List<T> list, final int chunkSize) {
    List<List<T>> chunks = new ArrayList<>();
 
    for (final List<T> chunk : ListUtils.partition(list, chunkSize)) {
        chunks.add(chunk);
    }
 
    return chunks;
}- 使用Google Guava
import com.google.common.collect.Lists;
 
public List<List<T>> splitListToChunksWithGuava<T>(List<T> list, final int chunkSize) {
    List<List<T>> chunks = Lists.partition(list, chunkSize);
    return chunks;
}- 使用手动分页
public List<List<T>> splitListToChunksManually<T>(List<T> list, final int chunkSize) {
    List<List<T>> chunks = new ArrayList<>();
    int listSize = list.size();
 
    for (int i = 0; i < listSize; i += chunkSize) {
        chunks.add(list.subList(i, Math.min(listSize, i + chunkSize)));
    }
 
    return chunks;
}- 使用SubList方法
public List<List<T>> splitListToChunksWithSubList<T>(List<T> list, final int chunkSize) {
    List<List<T>> chunks = new ArrayList<>();
    int listSize = list.size();
 
    for (int i = 0; i < listSize; i += chunkSize) {
        chunks.add(list.subList(i, Math.min(listSize, i + chunkSize)));
    }
 
    return chunks;
}以上五种方法都可以用于将Java中的List分割成多个分块。你可以根据项目中已经使用的库或者个人喜好来选择合适的方法。
评论已关闭