高端网站开发建设,芷江建设局网站,上海网站设计与制,厦门本地网站目录 遍历方式的适用场景对比
迭代器遍历
列表迭代器 增强for遍历 Lambda表达式
lambda表达式简介 普通for遍历
集合中通用的并且常用的六种方法 遍历方式的适用场景对比
迭代器遍历 #xff1a;在遍历过程中需要删除元素#xff0c;请使用迭代器
列表迭代器#xff1…目录 遍历方式的适用场景对比
迭代器遍历
列表迭代器 增强for遍历 Lambda表达式
lambda表达式简介 普通for遍历
集合中通用的并且常用的六种方法 遍历方式的适用场景对比
迭代器遍历 在遍历过程中需要删除元素请使用迭代器
列表迭代器 在遍历过程中需要添加元素请使用列表迭代器
增强for遍历 仅仅需要遍历
lambda表达式仅仅需要遍历
普通for 如果便利的时候想操作索引可以使用普通for
迭代器遍历
首先定义一个list之后添加数据到list当中定义出一个迭代器之后采用迭代器的next方法进行判断有没有元素有的话就进行返回当前元素的值之后在进行移动指针到下一位 public static void main(String[] args) {ListInteger list new ArrayList();list.add(111);list.add(222);list.add(333);/** 定义一个迭代器* hasNext方法判断是否有该元素* next方法 将当前结果返回 并指向下一位* */IteratorInteger it list.iterator();while (it.hasNext()){Integer val it.next();System.out.println(val);}}
如果我在遍历过程中需要删除某个元素就可以采用下面这种写法注意要用迭代器提供的remove方法进行删除不然代码会报异常
public class ListTest {public static void main(String[] args) {ListInteger list new ArrayList();list.add(111);list.add(222);list.add(333);/** 定义一个迭代器* hasNext方法判断是否有该元素* next方法 将当前结果返回 并指向下一位* */IteratorInteger it list.iterator();while (it.hasNext()){Integer val it.next();if (val.equals(222)){it.remove();}System.out.println(val);}System.out.println(list);}
}可以看到输出结构如下图已经删除了222 需要注意的是方法遍历时仍然会输出222因为next方法会先将返回值也就是222传给val之后才调用的remove方法进行删原list之后输出的是val的值
当然如果不想要输出要删除的元素最直接的方法就是加上continue方法 IteratorInteger it list.iterator();while (it.hasNext()){Integer val it.next();if (val.equals(222)){it.remove();continue;}System.out.println(val);}
列表迭代器
这是list格外多出的一种遍历方式
ListIteratorInteger it list.listIterator();while (it.hasNext()){Integer val it.next();System.out.println(val);}
他可以对列表进行添加元素当然也能够删除 ListIteratorInteger it list.listIterator();while (it.hasNext()){Integer val it.next();if(val.equals(111)){it.add(444);}System.out.println(val);}
输出结果如下图所示 增强for遍历
增强for是在jdk1.5之后出现的其内部原理就是一个Iterator迭代器
需要注意的是 这种方式只能够遍历list无法对里面的值就行修改 for (Integer integer : list) {System.out.println(integer);}可以看到我下面这种写法能不能修改list呢
for (Integer integer : list) {integer 10086;System.out.println(integer);}System.out.println(list);
如果只是要看遍历的输出结果 这个是肯定会有变化的因为我们是直接修改了integer的值输出的结果也是它但是intege只是作为一个第三者出现它先等于了list原来的值也就是说 只是让integer中list的值并不是让它等于list
可以看到输出结果如下 Lambda表达式
不能够操作list但是代码简洁只需要一行就可以完成 list.forEach(a - System.out.println(a));
甚至可以缩写成
list.forEach(System.out::println);
lambda表达式简介
Lambda 表达式是 Java 8 引入的一种函数式编程特性它允许你以一种更简洁的方式表示匿名函数或对象方法的实现。Lambda 表达式的基本语法如下
(parameters) - { body }其中Lambda 表达式由以下几个部分组成 参数列表parameters这是 Lambda 表达式接受的输入参数列表。你可以指定零个或多个参数多个参数用逗号分隔。参数的类型可以明确声明也可以根据上下文进行推导。 箭头符号-箭头符号分隔参数列表和 Lambda 表达式的主体。 主体body这是 Lambda 表达式的执行逻辑。它可以是一个单独的表达式或者是一段代码块用花括号括起来包含多个语句。
下面是一些使用 Lambda 表达式的示例
无参数的 Lambda 表达式
() - System.out.println(Hello, world!);有参数的 Lambda 表达式
(x, y) - {int sum x y;System.out.println(sum);
}有返回值的 Lambda 表达式
(x, y) - x y方法引用
System.out::println 普通for遍历
这是利用了list的索引就行遍历的方式但是需要注意的是set是没有索引的因此要想遍历set就不能用这种方式 for (int i 0; i list.size(); i) {System.out.println(list.get(i));}集合中通用的并且常用的六种方法
1.add
list中元素是可以重复的因此调用add方法 返回值永远是true set中则是不可以重复的如果添加相同的元素就会返回false
2.clear
这个是将集合清空的方法
3.remove
返回值也是boolean类型的删除成功返回true 失败返回false
4.contains
判断元素是否包含
底层是依赖equals方法进行判断是否存在的如果存的是自定对象这一定要重写equals在自定义的javaBean中重写equals就行
5.isEmpty
判断集合是否为空
6.size
找到集合的长度