每个索引的Java 8

Dav*_*sco 3 java foreach for-loop java-8

有谁知道如何分别以Java 8方式实现以下片段代码,是否有任何流方法可检测forEach中的第一个元素?

List<String> myList = new ArrayList<String>();
myList.add("A");
myList.add("B");

int i = 0;

for (final String value : myList) {
   if (i == 0) {
     System.out.println("Hey that's the first element");
   }

   System.out.println(value);

   i++;
 }
Run Code Online (Sandbox Code Playgroud)

Java8:

myList.stream().forEach(value -> {
  // TODO: How to do something special for first element?

  System.out.println(value);
});
Run Code Online (Sandbox Code Playgroud)

此外,假设目标是以下(控制台输出):

A    Something special
B
C
D
E
F
Run Code Online (Sandbox Code Playgroud)

One*_*ros 5

可以为您工作吗?

myList.stream().findFirst().ifPresent(e -> System.out.println("Special: " + e));
myList.stream().skip(1).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

输出:

Special: A
B
Run Code Online (Sandbox Code Playgroud)

选择:

myList.stream().findFirst().ifPresent(e -> somethingSpecial(e));
myList.stream().forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

  • @Oneiros:您是对的,对待无序Set的“第一个”元素特别没有意义,但是您不会相信人们经常想要这个的频率是多少…… (2认同)