遍历一个List有如下几种方法   5 6 是 java8

增强for循环底层由Iterator实现

增强for的出现时替代迭代器的,所以在遍历集合或者遍历数组就可以使用增强for去完成

增强for循环的弊端:如果集合的对象是null,如果再次对集合操作,就会出现异常,对集合进行判断,非空判断解决

四种遍历方法:

1:迭代器  2:普通for循环   3:增强for循环   4:(非重点)listiterator(iterator的子接口)两者相类似
(还以一种Vector自带的elements()方法,类似于迭代器的遍历方法)
如果结合为null,抛出:java.lang.NullPointerException
当应用程序试图在需要对象的地方使用 null 时,抛出该异常

public class ForExercise {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
// array=null;
array.add("hello");
array.add("java");
array.add("worlid");
// 迭代器遍历
//优点:自带选择判断语句hasNext()方法,不会出现遍历数量出现错误,书写复杂
// 可以对集合进行删除操作
//缺点:该方法只能遍历集合,比较局限,且需要建立对象,占用空间

Iterator<String> it = array.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
}
System.out.println("----------------");
//普通for循环
//优点:有判断数组长度的控制语句,并且可以选择遍历长度,
// for循环使用范围广,且使用简单
//缺点:for循环更多适用于循环条件,不能对集合本身进行操作,对于集合遍历稍显不足
for(int x=0;x<array.size();x++){
String s1 = array.get(x);
System.out.println(s1);
}
System.out.println("-----------------");
//增强for循环
//优点:代码简单易读,书写方便
//缺点:不能对集合本身进行操作

迭代器(Iterator)

  迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

  Java中的Iterator功能比较简单,并且只能单向移动:

  (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

  (2) 使用next()获得序列中的下一个元素。

  (3) 使用hasNext()检查序列中是否还有元素。

  (4) 使用remove()将迭代器新返回的元素删除。

  Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

迭代器应用:
 list l = new ArrayList();
 l.add("aa");
 l.add("bb");
 l.add("cc");
 for (Iterator iter = l.iterator(); iter.hasNext();) {
  String str = (String)iter.next();
  System.out.println(str);
 }
 /*迭代器用于while循环
 Iterator iter = l.iterator();
 while(iter.hasNext()){
  String str = (String) iter.next();
  System.out.println(str);
 }

for(String b:array) {
System.out.println(b);
}
}
}

增强for循环的格式
for(数据大类型  变量名 : 数组或者集合对象名){
输出变量
}

public static void test1(List<String> list) {
1 for (int i = 0; i < list.size(); i++)
2 for (int i = 0,lengh=list.size(); i < lengh; i++)
{ System.out.println(list.get(i)); }}

3 Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());

4 for(String str:list){
System.out.println(str);

5 list.forEach(str->{
System.out.println(str); });

6 list.forEach(str->{
System.out.println(str);});

1、通过key集合访问,对Key敢兴趣,可以访问与key对应的Value值;

 for(String k:maps.keySet()){
            System.out.println(k+":"+maps.get(k));
        }
2、通过value集合访问,只对value值感兴趣,无法访问key值;

 for(String value:maps.values()){
            System.out.println(value);
        }
3、通过Entry集合访问,对Entry感兴趣,可以访问与key对应的Value值

 for(Entry entry:maps.entrySet()){
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
4、通过迭代Key集合访问Map集合,maps.keySet()返回的是一个Set<String>集合,Set直接继承Collection,所以可以对其进行迭代。

Iterator<String> iterator = maps.keySet().iterator();
        while(iterator.hasNext()){
            String key = iterator.next();
            System.out.println(key+":"+maps.get(key));
        }

5、通过迭代Values集合访问Map集合,maps.values()返回的是Collection<String>,所以可以对其迭代。

Iterator<String> iter= maps.values().iterator();
        while(iter.hasNext()){
            System.out.println(iter.next());
        }

6、通过迭代Entry集合访问Map集合,maps.entrySet()返回的是一个Set<Entry<String, String>>,Set直接继承Collection,所以可以对其迭代。

Iterator<Entry<String, String>> it = maps.entrySet().iterator(); 
        while(it.hasNext()){ 
            Entry<String, String> entry = it.next(); 
            System.out.println(entry.getKey()+":"+entry.getValue());

}

Java中迭代器Iterator接口是用来对集合中的对象进行遍历或者移除操作的,大多数是遍历操作的

下面介绍迭代器的使用:

ArrayList list=new ArrayList();
  list.add("A");
  list.add("B");
  list.add("H");
  list.add("E");
  list.add("J");
  
  Iterator ite=list.iterator();
  while(ite.hasNext()){
   System.out.println(ite.next());
  }

public class Test2 {
public static void main(String[] args) {
int[][] arr = new int[][]{{10,20,30},{100,200,300}};
//int[] arr0 = arr[0]; // 取得二维数组第一维的第一个数组
//取得二维数组的第一种方法 ,for循环
for (int i = 0; i < arr.length; i++) { //二维数组的长度指的是最外层的数组长度
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
//取得二维数组的第二种方法,增强for循环遍历数组
for (int[] childArr : arr) {
for (int number : childArr) {
System.out.println(number);}}}}

简单的小栗子:

package sample;

public class arry {
public static void main(String[] args) {
// int[] arr = new int[20]; //添加数组个数20
// for(int i=0;i<arr.length;i++)
// arr[i] = i;

int[] scores = new int[] {100,99,98};
for(int i = 0;i<scores.length;i++)
System.out.println(scores[i]);
// for(int score : scores)//增强遍历
// System.out.println(score);

}
}

for循环遍历的盗版笔记的更多相关文章

  1. To Java程序员:切勿用普通for循环遍历LinkedList

    ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...

  2. *使用while循环遍历数组创建索引和自增索引值

    package com.chongrui.test;/* *使用while循环遍历数组 *  *  * */public class test {    public static void main ...

  3. 【转】ArrayList循环遍历并删除元素的常见陷阱

    转自:https://my.oschina.net/u/2249714/blog/612753?p=1 在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出b ...

  4. sqlserver中的循环遍历(普通循环和游标循环)

    sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  5. php中的循环遍历 foreach list each

    foreach语句遍历数组foreach语句用于循环遍历数组,每进行一次循环,当前数组元素的值就会被赋值给变量value(也可以是其它变量),数组指针会逐一的移动. 代码示例: foreach($ar ...

  6. ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)

    主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...

  7. ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    最新最准确内容建议直接访问原文:ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性 ...

  8. php用压栈的方式,循环遍历无限级别的数组(非递归方法)

    php用压栈的方式,循环遍历无限级别的数组(非递归方法) 好久不写非递归遍历无限级分类...瞎猫碰到死老鼠,发刚才写的1段代码,压栈的方式遍历php无限分类的数组... php压栈的方式遍历无限级别数 ...

  9. json原理和jquey循环遍历获取所有页面元素

    1.json原理: javascript object notation (javascript 对象表示法) 是一种轻量级的数据交换语言,由javascript衍生而出,适用于.NET java c ...

  10. 编写高质量代码改善C#程序的157个建议[动态数组、循环遍历、对象集合初始化]

    前言   软件开发过程中,不可避免会用到集合,C#中的集合表现为数组和若干集合类.不管是数组还是集合类,它们都有各自的优缺点.如何使用好集合是我们在开发过程中必须掌握的技巧.不要小看这些技巧,一旦在开 ...

随机推荐

  1. Python 基于xml.etree.ElementTree实现XML对比

    测试环境 Python 3.6 Win10 代码实现 #!/usr/bin/env python 3.4.0 #-*- encoding:utf-8 -*- __author__ = 'shouke' ...

  2. Cloudflare教程:如何注册账户、购买域名、开启免费CDN服务?

    Cloudflare介绍 什么是Cloudflare Cloudflare是一家总部位于旧金山的美国跨国科技企业,以向客户提供基于反向代理的内容分发网络(CDN)及分布式域名解析服务为主要业务. 目前 ...

  3. 【Java】SonarLint 疑难语法修正

    规范驼峰命名使用: 提示信息 Local variable and method parameter names should comply with a naming convention 代码片段 ...

  4. 【Vue】接口模块化处理

    在前端Vue项目中,接口会被统一放在一个目录中管理: 一个模块的所有接口放在一个JS文件中: 文件会导入封装好的请求方法,和动态绑定的接口地址 import request from '@/utils ...

  5. 训练人形机器人时如何收集人类行为数据 —— 通过人来训练机器人(真人实际演示动作)or 仿真环境自动生成 —— 哪种方式更优、更可行呢

    特斯拉的老马,搞的optimus人形机器人就是通过人来训练机器人(真人实际演示动作),但是未来使用仿真环境自动生成数据是否可行呢,NVIDIA的老黄在2024 GTC上是大力推出自家的GROOT平台, ...

  6. 【转载】 介绍具有代表性的CPG控制机器人

    原文地址: https://www.cnblogs.com/zhaochenliang/p/10453255.html ---------------------------------------- ...

  7. 使用GPU计算时,单精度float32类型和半精度float16类型运算效率的区别

    最近在看资料时发现写着使用float16 半精度类型的数据计算速度要比float32的单精度类型数据计算要快,因为以前没有考虑过数据类型对计算速度的影响,只知道这个会影响最终的计算结果精度.于是,好奇 ...

  8. AI实践者师生夏令营讲座视频:南京大学Lamda实验室(周志华 团队)讲座视频 —— 强化学习的局限性与展望

    视频地址: 周志华团队与Intel团队的讲座视频--强化学习的局限性与未来展望 视频链接地址: https://bizwebcast.smarket.com.cn/b975d6d9969a42cba9 ...

  9. .Net Aspire次体验

    上次用上了在微软MVP的带领下用上了Aspire,在开发阶段隐藏了细节,什么都不用做,点个调试按钮就跑起来了,可是部署时出现了难题, 因为发布时只能选择Azure环境,为此注册了Azure,开了科网. ...

  10. 告别卡顿,畅享GitHub:国内开发者必看的五大加速访问与下载技巧

    告别卡顿,畅享GitHub:国内开发者必看的五大加速访问与下载技巧 本文介绍了五种加速在国内访问和下载 GitHub 的方法,包括:使用 Gitee 平台加速克隆代码.修改 hosts 文件.使用油猴 ...