【问题标题】:Using streams to partition a set of strings into subsets of size x [duplicate]使用流将一组字符串划分为大小为 x 的子集 [重复]
【发布时间】:2019-04-24 09:31:31
【问题描述】:

我有一个字符串流。我想提供一个方法参数 x,然后将 x 组中的字符串流式传输,然后可以将这些字符串收集到一个集合中。

因此,如果 x=4 并且流大小为 8,那么我将有两个包含 4 个元素的集合。对于这些 4 个元素的集合,我可以调用 ForEach 并对其执行其他操作,在上面的示例中,对于每个 4 个元素集合,forEach 将被调用两次 1。

【问题讨论】:

  • 计算流大小是一个终端操作。
  • 不清楚你在问什么,但你需要在提问之前尝试一些事情。这是一个问答网站
  • @Reimeus 请看标题。我想我正在寻找使用流将一组字符串划分为大小为 x 的子集

标签: java stream


【解决方案1】:

我不太确定这是否是您所要求的。

所以你有一些数据(比如整数),你想把它放到多个集合中,每个集合都有 X 个元素。

也许您可以使用二维数组?我手头没有JDK,所以我只是写了一些伪代码。 例如:

int[][] MyArray = new int[MAX_BUFFER][X]

然后你使用一个while循环

int a = 0, b = 0;
While(!instream.empty){
  int t = instream.next;
  MyArray[a][b]=t;
  b++;
  if(b>=X){
    a++;
    b=0;
  }
}

我突然明白arraylist of arrays 可能更适合你。

ArrayList<int[]> MyArray = new ArrayList<int[]>()

    int a = 0;
    int temparray= new int[X];
    While(!instream.empty){
      int t = instream.next;
      temparray[a]=t;
      a++;
      if(a>=X){
        a=0;
        MyArray.add(temparray);
      }
    }
    if(a>0){//So there are some data left in the temp array;
      MyArray.add(temparray);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2013-08-27
    • 2013-08-19
    • 2011-11-25
    相关资源
    最近更新 更多