我是靠谱客的博主 多情野狼,最近开发中收集的这篇文章主要介绍lamda循环_for循环在JAVA中使用lambda表达式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

My Code:

List ints = Stream.of(1,2,4,3,5).collect(Collectors.toList());

ints.forEach((i)-> System.out.print(ints.get(i-1)+ " "));

out put:

1 2 3 4 5

my question is why i must be i-1 inside the get method? does i-1 prevent the out of boundary issue?

Does below code acts like the for loop iteration?

(i)-> System.out.print(ints.get(i-1))

so is above code equal to this

for(Ineger i:ints)

System.out.print(ints.get(i));

解决方案

The lambda parameter i takes the value of the items in the collection, not the indexes. You are subtracting 1 because the values happen to be one greater than their index.

If you tried with

List ints = Stream.of(10,20,40,30,50).collect(Collectors.toList());

ints.forEach((i)-> System.out.print(ints.get(i-1)+ " "));

You would find the code does not work so well.

You should be able to simply do (not needing to do a get call)

ints.forEach((i)-> System.out.print(i + " "));

Your lambda and your proposed for loop are not equivalent.

ints.forEach((i)-> System.out.print(ints.get(i-1)))

Would be equivalent to

for(Integer i:ints)

System.out.print(ints.get(i-1));

Note the preservation of the minus 1.

In response to the comment:

Lambdas are not loops, they are functions (effectively anyway). In your first example the forEach method is what provides the looping functionality. The argument lambda is what it should do on each iteration. This is equivalent to the body of your for loop

In the example in the comment, max is the function that provides the loop like behavior. It will iterate (do a loop) of the items to find the maximum value). The lambda you provide i -> i would be an identity function. It takes one parameter and returns that object unmodified.

Suppose you had a more complex object and you wanted to compare them on a particular member such as GetHighScore(). Then you could use i -> i.GetHighScore() to get the object with the highest score.

最后

以上就是多情野狼为你收集整理的lamda循环_for循环在JAVA中使用lambda表达式的全部内容,希望文章能够帮你解决lamda循环_for循环在JAVA中使用lambda表达式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部