相关疑难解决方法(0)

将列表拆分为具有固定数量元素的多个列表

如何将元素列表拆分为最多N个项目的列表?

例如:给定一个包含7个元素的列表,创建4个组,使最后一个组可能包含更少的元素.

split(List(1,2,3,4,5,6,"seven"),4)

=> List(List(1,2,3,4), List(5,6,"seven"))
Run Code Online (Sandbox Code Playgroud)

split scala list

111
推荐指数
4
解决办法
6万
查看次数

Java 8分区列表

是否可以将纯Jdk8中的List分区为相等的块(子列表).

我知道可以使用Guava Lists类,但是我们可以使用纯Jdk吗?我不想在我的项目中添加新的jar,仅用于一个用例.

解决方案:

tagir-valeev提出了迄今为止最好的解决方案:

我还发现了其他三种可能性,但它们只适用于少数情况:

1.Collectors.partitioningBy()将列表拆分为2个子列表 - 如下所示:

intList.stream().collect(Collectors.partitioningBy(s -> s > 6));
    List<List<Integer>> subSets = new ArrayList<List<Integer>>(groups.values());
Run Code Online (Sandbox Code Playgroud)

2.Collectors.groupingBy()将我们的列表拆分为多个分区:

 Map<Integer, List<Integer>> groups = 
      intList.stream().collect(Collectors.groupingBy(s -> (s - 1) / 3));
    List<List<Integer>> subSets = new ArrayList<List<Integer>>(groups.values());
Run Code Online (Sandbox Code Playgroud)

3.分离器分离:

List<Integer> intList = Lists.newArrayList(1, 2, 3, 0, 4, 5, 6, 0, 7, 8);

    int[] indexes = 
      Stream.of(IntStream.of(-1), IntStream.range(0, intList.size())
      .filter(i -> intList.get(i) == 0), IntStream.of(intList.size()))
      .flatMapToInt(s -> s).toArray();
    List<List<Integer>> subSets = 
      IntStream.range(0, indexes.length - 1)
               .mapToObj(i …
Run Code Online (Sandbox Code Playgroud)

java partitioning java-8

19
推荐指数
2
解决办法
2万
查看次数

如何在Java 8中对对象列表进行分页?

给定一个java.util.Listn元素和所需的页面大小m,我想将它转换为包含地图n/m+n%m的元素.每个地图元素都应包含m元素.

这是一个整数的例子:

    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

    // What is the equivalent Java 8 code to create the map below from my list?

    Map<Integer, List<Integer>> map = new HashMap<>();
    map.put(0, Arrays.asList(1,2,3));
    map.put(1, Arrays.asList(4,5,6));
    map.put(2, Arrays.asList(7,8,9));
    map.put(3, Arrays.asList(10));
Run Code Online (Sandbox Code Playgroud)

这是可能的,使用Java 8?

java list java-8 partition

15
推荐指数
2
解决办法
2万
查看次数

Java - Stream - 收集每N个元素

我正在努力学习java - stream.我能够做简单的迭代/过滤/地图/收集等.

当我试图收集每个3个元素并打印时,如本例所示,[收集每3个元素并打印等等...]

    List<String> list = Arrays.asList("a","b","c","d","e","f","g","h","i","j");

    int count=0;
    String append="";
    for(String l: list){
        if(count>2){
            System.out.println(append);
            System.out.println("-------------------");
            append="";
            count=0;
        }
        append = append + l;
        count++;
    }
    System.out.println(append);
Run Code Online (Sandbox Code Playgroud)

输出:

abc
-------------------
def
-------------------
ghi
-------------------
j
Run Code Online (Sandbox Code Playgroud)

我没有得到任何线索如何使用流这样做.我应该实现自己的收藏家来实现这一目标吗?

java java-8 java-stream

15
推荐指数
4
解决办法
7095
查看次数

如何将列表分发到子列表中,保持元素的原始顺序?

如何将列表拆分为给定数量的列表,按顺序获取元素并将它们分发到子列表(因此不对列表进行分区)?

我想尽可能"好"(使用Java 8功能或番石榴或类似的东西).

  • 示例列表: [1 2 3 4 5 6 7]
  • 应分为3: [1 4 7] [2 5] [3 6]
  • 应分为2: [1 3 5 7] [2 4 6]

java split list java-8

2
推荐指数
1
解决办法
536
查看次数

标签 统计

java ×4

java-8 ×4

list ×3

split ×2

java-stream ×1

partition ×1

partitioning ×1

scala ×1