遍历一个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. rtmp流程解析

    如果rtmp推流地址:rtmp://服务器地址:rtmp端口/路径/名称对应的websocket地址:ws://服务器地址:websocket端口/路径/名称.flv举例:live作为路径,s作为流名 ...

  2. 使用with 还是 join

    用分解关联查询的方式查询具有以下优势:多次单表查询,让缓存的效率更高:许多应用程序可以方便地缓存单表查询对应的结果对象.对 MYSQL 的查询缓存来说,如果关联中的某个表发生了变化,那么就无法使用查询 ...

  3. 【云服务器】记录使用腾讯云服务器搭建个人blog网站-【1】服务器配置

    服务器购买 第一次写博客,写的不好请见谅 腾讯云教育活动 配置还行,能搭建个网站了果断下单 选择系统 缺点(对我来说):参考于:人生不开窍:Windows Server各版本差异 不能安装window ...

  4. Redis持久化RDB与AOF介绍

    就是将内存中的数据通过rdb/aof进行持久化写入硬盘中 rdb就是进行持久化的快照 在指定的时间间隔内,执行数据集的时间点快照.这个快照文件称为(dump.rdb)RDB文件,Redis DataB ...

  5. 【C】Re05 指针

    一.变量 & 指针 变量 = 内存地址 + 存储值 指针变量 = 内存地址 + 存储值[变量的内存地址] 作用: 间接访问内存地址 内存地址 = 地址编号 地址编号:内存中的每个字节唯一的编号 ...

  6. 【Vue】10 Vue-Cli 项目创建

    简单的Demo案例并不需要Vue-Cli,因为一个页面之内可以总揽 但是真实的项目开发,考虑代码结构,目录结构,部署,热部署,单元测试... 代码量呈几何倍数增长,而且缺少轮子就写起来很痛苦 所以必须 ...

  7. 人形机器人sim2real —— 致使现实环境与仿真环境下的差距的因素 —— sim2real

    下图引自:https://b2b.baidu.com/q/aland?q=7B7474317C2E72330F621B0F7D6F09247E747E610623742B&id=qid599a ...

  8. 台式机电脑散热之狂想曲——主机机箱散热的另类方法(纯空想中ing)

    本博文是一篇狂想曲,之所以叫狂想曲是因为本文只是博主在无聊时突发奇想,而且仅停留于想的阶段,所以本文内容不用太过认真. 事情是这样的,博主有一台式机,有事没事的就喜欢宅在宿舍里面,有时候还能偶然用这台 ...

  9. Jupyter 实验室中的 GPU 仪表板

    这两天收到了NVIDIA公司推送的新闻: https://developer.nvidia.com/zh-cn/blog/gpu-dashboards-in-jupyter-lab/?ncid=em- ...

  10. spring5的新特性

    1.背景 2.依赖环境的变化 整个 Spring5 框架的代码基于 Java8,运行时兼容 JDK9,许多不建议使用的类和方 法在代码库中删除 3.自带了通用的日志封装 3.1.日志的简单使用 Spr ...