如何使用Java 8更简便实现按指定位置拆分列表获取分区数据
Java 8 列表固定间隔分区实现方案
你可以通过Java 8提供的流API简化代码,无需手动编写循环和边界判断,实现效果和你原有代码完全一致:
import java.util.ArrayList; import java.util.List; import java.util.stream.IntStream; public class PartitionTest { public static void main(String[] args) { int position = 2; List<String> arrlist = new ArrayList<>(); arrlist.add("A"); arrlist.add("B"); arrlist.add("C"); arrlist.add("D"); arrlist.add("E"); System.out.println("Original arrlist: " + arrlist); // 核心分区逻辑 IntStream.rangeClosed(0, (arrlist.size() - 1) / position) .mapToObj(i -> arrlist.subList( i * position, Math.min((i + 1) * position, arrlist.size()) )) .forEach(sublist -> System.out.println("Sublist of arrlist: " + sublist)); } }
运行输出和你给出的结果完全相同:
Original arrlist: [A, B, C, D, E] Sublist of arrlist: [A, B] Sublist of arrlist: [C, D] Sublist of arrlist: [E]
注意事项
List.subList()返回的是原列表的视图,修改子列表会同步影响原列表。如果需要得到完全独立的子列表,可以调整分区逻辑,把每个子列表转为新的独立集合:
// 需引入java.util.stream.Collectors .mapToObj(i -> arrlist.subList(i * position, Math.min((i + 1) * position, arrlist.size())) .stream() .collect(Collectors.toList()) )
内容的提问来源于stack exchange,提问作者Shiladittya Chakraborty
相关产品推荐
相关产品推荐

