import java.util.Arrays;
import java.util.*;
import java.util.stream.Collectors;
// double the first even number greater than 3
public class FirstDouble {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1,2,3,5,6,7,8,9);
/* int result = 0;
for(int e : numbers)
{
if(e>3 && e%2==0)
{
result = e*2;
break;
}
}
System.out.println(result);
*/
System.out.println(
numbers.stream()
.filter(Sample::isGT3)
.filter(Sample::isEven)
.map(Sample::doubleIt)
.findFirst());
}
public boolean isGt3(int number) {
return number > 3;
}
public boolean isEven(int number) {
return number % 2 == 0;
}
public int doubleIt(int number) {
return number * 2;
}
}
需要做三处修改才能使代码编译:
- 将
Sample
重命名为FirstDouble
,以便正确引用 类 - 将
isGt3
方法重命名为isGT3
- 由于方法是静态引用的,所以在
isGT3
、isEven
和doubleIt
中添加
static
修饰符。之后,它输出Optional[12]
。如果只打印数字,则在findFirst
后添加get
。