Java流:找到两个流之间不同的第一个项目

Per*_*tta 2 java java-stream

假设我有两个具有相似但不一定相同内容的流.如何找到两者之间不同的第一个项目.例如,假设我有:

Stream<String> first = Arrays.asList("a", "b", "c").stream();
Stream<String> second = Arrays.asList("a", "x", "c").stream ();
Run Code Online (Sandbox Code Playgroud)

如何确定"b"和"x"是流不同的第一个项目?如果其中一个流被截断呢?

Lou*_*man 5

这不是一个用例,流可以做任何对你有用的事情.没有内置的方法来执行此操作,这比将流转换为Iterators并以更传统的方式比较它们更好,或者首先不使用流.

为了更传统地做到这一点,有两个Collection,我会写

Iterator<String> itr1 = collection1.iterator();
Iterator<String> itr2 = collection2.iterator();
for (int i = 0; itr1.hasNext() && itr2.hasNext(); i++) {
  if (!itr1.next().equals(itr2.next())) {
    System.out.println(i);
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)