迭代器和增强型for循环
★迭代器:
Java集合框架的集合类,我们有时候称之为容器。容器的种类有很多种,比如ArrayList、LinkedList、HashSet...,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构的;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。
因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素。所以为了使对容器内元素的操作更为简单,Java引入了迭代器模式!
把访问逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合的内部结构。
public class CollectionDemo1 {
public static void main(String[] args) {
//集合中可以存任意类型
Collection co = new ArrayList<>();
co.add("a");
co.add("sfadjkjksd");
//迭代器 获取迭代器
Iterator it = co.iterator();
while(it.hasNext()){//判断是否存在下个元素
String s = (String)it.next();//获取下个元素
//System.out.println(s);
System.out.println(s.length());
}
}
}
★增强型for循环:
2,特点:
书写简洁:
对集合进行遍历,只能获取集合元素,不能对集合进行操作,类似迭代器的简写形式,但是迭代器可以对元素进行remove操作(ListIterator可以进行增删改查的操作)。
3,格式:
for(数据类型变量名 :被遍历的集合(collection)或者数组) {
执行语句
}
public class ForEach {
public static void main(String[] args) {
fun();
}
//for循环的弊端 有下标
//增强for循环优点 代码少了 没有索引
public static void fun(){
int[] arr={12,5,689,45,23,69,87};
// for (int i = 0; i < arr.length; i++) {
// System.out.println(arr[i]);
// }
for(int i: arr){
System.out.println(i+1);//没有下标,不能对元素进行单个操作,整体加一
}
System.out.println(arr[0]);
}
}
★迭代器和增强型for循环的并发异常:
/* 迭代器的并发异常 java.util.ConcurrentModificationException
* 增强for循环 java.util.ConcurrentModificationException
* 在遍历或者迭代过程中对集合进行增删 都会发生异常
* */
public class ListDemo {
public static void main(String[] args) {
List<String> s=new ArrayList<String>();
s.add("欲问青天这人生有几何");
s.add("这人生有几何");
s.add("怕这去日苦多");
//判断集合中是否有"这人生有几何",假如有,那么把"爱的故事上集"添加到集合中.
/*//增强型for循环
for(String i:s){
if (i.equals("这人生有几何")) {
s.add("爱的故事上集");
}
}
*/
/*迭代器
Iterator<String> it=s.iterator();
while (it.hasNext()) {
String s1 = (String) it.next();
if (s1.equals("这人生有几何")) {
s.add("爱的故事上集");
System.out.println(s1);
}
} */
//判断集合中是否有"这人生有几何",假如有,那么把"爱的故事上集"添加到集合中.
for (int i = 0; i < s.size(); i++) {
//System.out.println(s.get(i));
if((s.get(i)).equals("这人生有几何")){
s.add("爱的故事上集");
}
}
for (int i = 0; i < s.size(); i++) {
System.out.println(s.get(i));
}
}
}
迭代器和增强型for循环的更多相关文章
- java学习笔记20(Arraylist复习,Collection接口方法,迭代器,增强型for循环)
集合:集合是Java提供的一种容器,可以用来存储多个数据: 集合与数组的区别:集合的长度是可变的,数组的长度是固定的 集合中存储的数据必须是引用类型数据: ArrayList回顾: public cl ...
- 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举
---------- android培训.java培训.期待与您交流! ---------- 一.静态导入 1.import和import static区别: (1)import 是导入一个类或某个包 ...
- JAVA提高一:静态导入、可变参数、增强型for循环、装拆箱
国庆假期已结束,假期8天,全部在家带娃,体会到了妻子的不容易,需要好好努力来多赚钱了,言归正传.10月份开始进去JAVA 高级语法知识学习,本节复习学习的为:静态导入.可变参数.增强型for循环.装拆 ...
- [Day18]集合框架Collection、迭代器、增强for循环以及泛型
1.集合 1.1集合-本身是一个存储的容器 集合类的基本接口是Collection接口,这个接口有两个基本方法 (1)boolean add(E element) 用于向集合中添加元素,如果添加元素确 ...
- JAVA-迭代器\增强型for循环。(新手)
//导入的包.import java.lang.reflect.Array;import java.util.*;//创建的一个类.public class zylx1 { //公共静态的主方法. p ...
- Python之路迭代器协议、for循环机制、三元运算、列表解析式、生成器
Python之路迭代器协议.for循环机制.三元运算.列表解析式.生成器 一.迭代器协议 a迭代的含义 迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的 ...
- 11、增强型for循环对二维数组的输出(test8.java)
由于笔者原因,这部分知识,尚不能整理出代码,笔者会好好学习增强型for循环中迭代起的相关知识,在笔者有能力,书写好这段代码后,将对本篇文章,进行二次修改,也同时欢迎大家与笔者交流,共同学习,共同进步. ...
- 4、一个打了鸡血的for循环(增强型for循环)
对于循环,我们大家应该都不陌生,例如do-while循环,while循环,for循环,今天给大家介绍一个有趣的东西——打了鸡血的for循环(增强型for循环). 首先看代码,了解一下for循环的结构: ...
- Java自学-数组 增强型for循环
Java 中如何使用增强for循环 增强型for循环在遍历一个数组的时候会更加快捷 步骤 1 : 增强型for循环 注:增强型for循环只能用来取值,却不能用来修改数组里的值 public class ...
随机推荐
- Android : apk签名的多种方法以及key的配置
方法一:使用Android SDK中的签名工具给apk签名: (1)Android源码的 build/target/product/security/ 目录下有 media.pk8.media.x50 ...
- SWAP 简介
swap 交换分区,是存放在内存当中的临时数据(断电数据丢失) SWAP作用:当内存不足时会导致系统挂了,SWAP就是起到一个临时内存的作用,当内存不足时SWAP充当临时内存,防止系统挂掉
- 2.Python爬虫入门二之爬虫基础了解
1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...
- final文案+美工
作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2476] 文案+美工: 剧情设计+题目设计+美工: 第21关: 剧情: 计算机学 ...
- chromium ⑤
我们都知道chromium是用webkit完成页面显示的, 那么chromium是怎样集成和封装webkit的呢? 是怎样将webkit整合到自己的框架中,并将一个页面渲染出来的? 这篇我 ...
- python列举django中间件的5个请求方法
process——request:请求进来时,权限认证. process——view:路由匹配之后,能够得到试图的试图函数. process——exceptions:异常是执行. process——t ...
- java问题排查工具之一板斧jstack——使用 jstack 定位 java进程CPU过高的问题
jstack主要用来查看某个Java进程内的线程堆栈信息.语法格式如下: jstack [option] pid jstack [option] executable core jstack [opt ...
- 【Python】练习题
练习1:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中 import os file1_path="e:\\test3\\2.t ...
- JSON的学习,希望可以指导
1.JSON的介绍 是一种轻量级的数据交换格式.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率. 2.格式 JSON ...
- Kaggle:House Prices: Advanced Regression Techniques 数据预处理
本博客是博主在学习了两篇关于 "House Prices: Advanced Regression Techniques" 的教程 (House Prices EDA 和 Comp ...