当前位置: 首页 > 知识库问答 >
问题:

流的限制不适用于基于字符数组[duplicate]的流

常翰
2023-03-14

为什么下面的代码不将输出限制为前三个字符?

 String vowelOne = "aaebcd";

 Stream
    .of(vowelOne.toCharArray())
    .limit(3)       
    .forEach(System.out::println);

输出:

  aaebcd

我希望输出为:

  aae

共有3个答案

苏墨竹
2023-03-14

正如Eran所提到的,Stream.of(char[])将产生一个Stream。

static Character[] toCharacterArray(String s) {
    Character[] array = new Character[s.length()];
    for(int i = 0; i < s.length(); i++) {
       array[i] = s.charAt(i);
    }
    return array;
}

并像这样使用它

Stream
    .of(toCharacterArray(vowelOne))
    .limit(3)
    .forEach(System.out::println);

或者可以使用<code>字符串。拆分(“”以创建字符串[]

String vowelOne = "aaebcd";

Stream
    .of(vowelOne.split(""))
    .limit(3)
    .forEach(System.out::println);

这两种方法都会导致

a
a
e
艾凯捷
2023-03-14

一般来说,codePoints()比chars()更好,它也能处理代理对。我不得不承认,对于你的情况来说,这可能有点过了。

private static String firstN(String input, int limit) {
    StringBuilder builder = new StringBuilder();
    input.codePoints().limit(limit).forEach(builder::appendCodePoint);
    return builder.toString();
}
段干瑞
2023-03-14

< code>Stream.of(char[])生成单个< code>char[]元素的< code>Stream(就像基元数组的< code>Arrays.asList()将生成单个元素的< code>List),因此< code>limit(3)不会截断< code >流,并且您正在打印整个< code>char[](从打印所有字符的事实中也可以看出这一点

尝试:

vowelOne.chars() // this returns an IntStream of the characters of the input String
        .limit(3)
        .forEach(i->System.out.println((char)i)); // without the casting to char, you'll
                                                  // get the numeric value of the first 3
                                                  // characters

输出:

a
a
e
 类似资料:
  • 我有两门课。我的基层: 还有我的另一门课。这个类扩展了BaseRequest类。 当我尝试创建映射器将我的Add Class转换为其他类时: 当我运行我的构建时,我收到了这个错误: 错误:(22,13)java:源参数中不存在名为“dateTransaction”的属性。你是说“空”吗?

  • 我已经通过。但是,我注意到Reshuffle()没有出现在发行版中。这是否意味着我将不能在任何数据流管道中使用?有什么办法可以绕过这个吗?或者pip包可能只是不是最新的,如果Reshuffle()在github的master中,那么它将在Dataflow上可用? 根据对这个问题的回答,我试图从BigQuery中读取数据,然后在将数据写入GCP存储桶中的CSV中之前对数据进行随机化。我注意到,我用来

  • 问题内容: 我们正在尝试写流口水,上面写着“如果事件在上周发生,请执行结果”。我们有常规的Java日期对象来表示事件发生的时间,但是我们不确定如何在流口水的LHS中表示我们希望该日期对象在上周发生。重要的是,一周的时间是任意的。它可以随时更改为月或年。最后,请记住,我们的会议是有状态的。 我在这里找到了一个相关的问题:在规则的LHS中使用java.util.Date。我将从以下答案中引用最相关的摘

  • 对于如何使用不透明响应,无论是从JavaScript还是作为页面上的资源,存在哪些实际的限制和“难题”?

  • 我想我仍然对OWL公理有一个基本的误解:(。 下面是我创建的一个小测试本体论: 当我在Protege中运行hermitreasoner时,我得到了的预期结果,即它是的成员。但是,就成为的成员而言,我对没有同样的感受。 我怀疑这与开放世界的假设有关,并且有可能可能还有另一个断言。有几个问题: 我诊断的问题正确吗? 我能得到一个例子,说明我如何让我的目标隐士推理是的成员,而不显式地做出断言吗? 谢啦

  • 问题内容: 我有一个这样的字符串:现在我想用实际的换行符替换\ n,这样它将变成 理发师 这是我的代码 但是它不起作用并且给我相同的字符串 问题答案: 您需要做: 该方法在其第一个参数中期望使用正则表达式。当在Java字符串中传递2时,您实际上传递了1。问题是,是一种逃避字符也正则表达式,因此正则表达式是actualy ,所以你需要把额外的两次。