提问者:小点点

一个关于如何准确地为intStream工作的问题


我有一个String,我将其转换为String的每个char的char值的ASCI数字的int流,然后将其映射回String并打印出每个char。

所有这些都有效,但我和。distinct()函数,我不太理解。

对于我的打印机(c)功能,它工作正常,输出为:

hello d
hello c
hello b
hello a 

所以它不打印第二个b,但是如果我在字符串仍然有第二个b之后打印出a本身。

这种互动的原因是什么?

公共类映射测试{public static void main(String[]args){

      String a = "dcbba";
      a.chars().distinct().mapToObj( c -> (char) c).forEach(c -> MapTesting.printer(c));
      
      System.out.println(a);
      
  }
  public static void printer(Character c) {
      System.out.println("hello " + c);
  }

      }

共1个答案

匿名用户

流对象不修改原始集合/对象,它们作用于副本。但更重要的是,字符串始终是不可变的,因此将包含定义它的所有内容,是的。

distinct()在幕后创建一个集,但实际上与您似乎要问的问题无关