文章目录
目录
文章目录
一.迭代器遍历
二.增强for遍历
三. forEach方法
四. Lambda表达式
函数式接口: 函数式接口是指只有一个抽象方法的接口
为什么Lambda只能用于函数式接口
总结
前言
作者简介:最爱吃兽奶
座右铭:抱怨身处黑暗,不如提灯前行
内容介绍:今天给大家讲一下集合的遍历方式。
一.迭代器遍历
迭代器(Iterator)是一种对象,它可以让我们遍历集合对象中的元素。Java中的集合类(例如ArrayList、LinkedList、HashSet、TreeSet等)都实现了Iterable接口,因此可以使用迭代器来遍历集合中的元素。
步骤
1.创建迭代器对象
2.判断是否有下一个元素
3.获取元素,并移动指针,指针默认指向起始位置
二.增强for遍历
增强for循环是一种Java语言中的循环结构,也称为for-each循环,底层由迭代器实现。它可以用来遍历数组或集合中的元素,语法比传统的for循环更简洁,代码更易读。增强for循环的语法格式如下:
for (元素类型 变量名 : 数组或集合) {
// 循环体
}
其中,元素类型是数组或集合中元素的数据类型,变量名是每个元素的变量名,数组或集合是要遍历的对象。在循环体中,可以使用变量名来访问每个元素的值。增强for循环适用于遍历数组或集合中的所有元素,但无法访问数组或集合的下标或索引。
三. forEach方法
集合中的forEach方法是Java 8中引入的一种遍历集合元素的新方式,它可以让我们更方便地遍历集合中的元素,而且可以使用Lambda表达式或方法引用来处理集合中的元素。
四. Lambda表达式
Lambda表达式是Java 8中引入的一种新的语法,它可以用来简化函数式接口的实现。Lambda表达式的语法非常简洁,可以让我们更方便地编写函数式接口的实现代码。
格式
箭头符号(->)左侧是参数列表,右侧是函数体。
() -> {}
() : 和方法的参数匹配
{} : 和方法的方法体匹配
可以省略的情况
1.省略参数类型:如果Lambda表达式的参数列表中只有一个参数, 并且该参数的类型可以根据上下文推断出来,则可以省略参数类型。 (String x) -> x + 1 (x) -> x + 1 2.省略参数括号:如果Lambda表达式的参数列表中只有一个参数,则可以省略参数括号。 复制代码 (x) -> x + 1 x -> x + 1 3.省略花括号:如果Lambda表达式的函数体中只有一条语句,则可以省略花括号。 复制代码 x -> {System.out.println(x)} x -> System.out.println(x) 4.省略return关键字:如果Lambda表达式的函数体中只有一条语句, 并且该语句的结果可以直接返回,则可以省略return关键字。 (x,y) - > return x+y (x, y) -> x + y 5.方法引用:如果Lambda表达式的函数体中只是调用了某个方法或构造函数,则可以使用方法引用来简化代码 x -> System.out.println(x) System.out::println 需要注意的是,Lambda表达式只能用于函数式接口的实现, 即只有一个抽象方法的接口
最终形式
函数式接口: 函数式接口是指只有一个抽象方法的接口
Consumer接口中只有一个抽象方法accept,因此是函数是接口,可以使用Lambda表达式
为什么Lambda只能用于函数式接口
Lambda表达式只能用于函数式接口,是因为Lambda表达式的本质是一个函数,它需要一个明确的目标类型来确定其参数类型和返回值类型。如果Lambda表达式可以用于任意类型的接口,那么编译器就无法确定Lambda表达式的类型,也就无法确定其参数类型和返回值类型,这样就无法正确地推断Lambda表达式的类型,也就无法正确地进行类型检查和编译。因此,Lambda表达式只能用于函数式接口。
总结
又到了令人开心的总结环节了,还是那句话,自己去敲去吧,大家可一定要敲代码呀
点赞。这样的人,不是傻子,他们知道自己想要什么,也知道自己能做什么。
---- 最爱吃兽奶