有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中对字符串集合进行分块

我有一个字符串类型的集合,其中包含0到10k的值。 我正在寻找一种优雅的或可重用的方法来编写一个方法,该方法接收字符串类型和批大小的集合,并将集合拆分为所提供批大小的较小块

我能想到的最佳解决方案是:

private static <T> Collection<Collection<T>> getBatches( List<T> collection, int batchSize ){
        return IntStream.iterate(0, i -> i < collection.size(), i -> i + batchSize)
                .mapToObj(i -> collection.subList(i, Math.min(i + batchSize, collection.size())))
                .collect(Collectors.toList());
    }

一些关切:

  1. 我希望接收String类型的集合,并返回String类型集合的集合或String类型集合的列表
  2. 我想知道这种逻辑是否适用于任何缺点或边缘情况

共 (1) 个答案

  1. # 1 楼答案

    请看以下示例想法:

      final List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7);
      final int chunkSize = 3;
      final AtomicInteger counter = new AtomicInteger();
    
      final Collection<List<Integer>> result = numbers.stream()
                  .collect(Collectors.groupingBy(it -> 
                                 counter.getAndIncrement() / chunkSize))
         .values();
    
      System.out.println(result);