3. 增强for循环

1) 作用:

对存储对象的容器进行迭代

2)  jdk5以前怎么迭代

3) 增强for循环迭代数组

String [] arr = {"a", "b","c"};   //数组的静态定义方式,只试用于数组首次定义的时候

// 传统方式

for(int i=0; i<arr.length; i++) {

// i依次表示数组的角标

String s =arr[i];

System.out.println(s);

}

System.out.println("-------------------------------------");

// 在jdk5中我们可以使用增强for循环迭代

// 增强for循环括号里写两个参数,第一个是声明一个变量,变量类型必须是数组元素的类型

// 第二个就是需要迭代的容器

// for循环会循环容器的length次, 每次都将容器的第n-1个元素赋值给声明的变量

for(String s : arr) {

// 循环体, 执行arr.length

// 每次都将arr中的第n-1个元素给s

System.out.println(s);   //

}

4) 单列集合 Collection

List list = new ArrayList();

list.add("aaa");

list.add("bbb");

list.add("ccc");

// 传统方式1

/* 1.获得迭代器

Iterator iter = list.iterator();

// 2.循环判断迭代器是否有下一个

while(iter.hasNext()) {

String str= (String) iter.next(); // 将迭代器的指针移向下一个,并将迭代当前指向的元素返回

System.out.println(str);

}

*/

// 传统方式2

for(Iterator iter=list.iterator(); iter.hasNext(); ){

String s =(String) iter.next();

System.out.println(s);

}

System.out.println("--------------------------------");

// 增强for循环, 没有使用泛型的集合能不能使用增强for循环迭代?能

for(Object obj : list) {

String s=  (String) obj;

System.out.println(s);

}

5) 双列集合 Map

Map map = new HashMap();

map.put("a", "aaa");

map.put("b", "bbb");

map.put("c", "ccc");

// 传统方式迭代1

// 1. 获得所有的key

Set keys = map.keySet();

// 2.迭代keys获得所有的key

Iterator iter = keys.iterator();

while(iter.hasNext()) {

String key= (String) iter.next(); // a b c

// 3.根据key获得对应的value

Stringvalue = (String) map.get(key);

System.out.println(key+ "=" + value);

}

System.out.println("---------------------------------");

// 传统方式2,必须掌握这种方式

// 1.获得所有的键值对Entry对象

Set entrys = map.entrySet();

// 2.迭代出所有的entry

iter = entrys.iterator();

while(iter.hasNext()) {

Map.Entryentry = (Entry) iter.next();

// 分别获得key和value

String key= (String) entry.getKey();

Stringvalue = (String) entry.getValue();

System.out.println(key+ "=" + value);

}

System.out.println("-------------------------------------");

System.out.println("增强for循环迭代,");

// 增强for循环迭代,

// 原则上map集合是无法使用增强for循环来迭代的,

// 因为增强for循环只能针对实现了Iterable接口的集合进行迭代

// Iterable是jdk5中新定义的接口,就一个方法iterator方法

// 只有实现了Iterable接口的类,才能保证一定有iterator方法

// java有这样的限定是因为增强for循环内部还是用迭代器实现的

// 而实际上,我们可以通过某种方式来使用增强for循环

for(Object obj : map.entrySet()) {

// obj 依次表示Entry

Map.Entryentry = (Entry) obj;

System.out.println(entry.getKey()+ "=" + entry.getValue());

}

6)集合迭代注意问题

// 在使用迭代器迭代集合的过程中,不能对集合进行增删操作

@Test

public void test4() {

List list =new ArrayList();

list.add("wangwu");

list.add("zhangsan");

list.add("lisi");

Iteratoriter = list.iterator();

while(iter.hasNext()){

Stringname = (String) iter.next();

if("wangwu".equals(name)){

// 从集合中删掉

//list.remove(name);

// 迭代过程中删除元素需要调用迭代器的方法

iter.remove();    // 删除我迭代的集合被我迭代的最后一个元素

}

}

// 1 2 4

System.out.println(list.size());

}

@Test

public void test5() {

List list =new ArrayList();

list.add("aa");

list.add("bb");

// 使用ListIterator迭代器

ListIteratorlistIterator = list.listIterator();

while(listIterator.hasNext()){

listIterator.next();

// 迭代过程中增加元素

listIterator.add("cc");

}

System.out.println(list.size());

}

7) 增强for循环注意问题

//在使用增强for循环时,不能对元素进行赋值

int[] arr = {1,2,3};

for(int num : arr) {

num = 0;

}

System.out.println(arr[1]);

增强for循环,Map,集合应用相关推荐

  1. 增强For循环以及集合遍历语法糖

    什么是增强For     增强for循环是for的一种新用法!用来循环遍历数组和集合.优缺点:只能从头到尾的遍历数组或集合,而不能只遍历部分:在遍历List或数组时,不能获取当前元素下标:增强for使 ...

  2. java 循环map 优雅写法_Java for循环Map集合优化实现解析

    这篇文章主要介绍了java for循环map集合优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在<for循环实战性能优化> ...

  3. Lambda表达式之循环map集合

    通常我们循环一个map集合会有三种方法(在jdk1.8之前) 链接如下: map循环三种方式 jdk1.8多了lambda表达式之后 我们可以更优雅的循环map集合,用最少最清晰的代码展现其内容 代码 ...

  4. java for循环map赋值_Java for循环Map集合优化实现解析

    这篇文章主要介绍了Java for循环Map集合优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在<for循环实战性能优化> ...

  5. 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型

    一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Project) 3) ...

  6. Java基础加强重温_05:Iterator迭代器、增强for循环、集合综合案例-斗地主、数据结构(栈、队列、数组、链表、红黑树)、List接口、Set接口

    摘要: Java基础加强重温_05: Iterator迭代器(指针跟踪元素). 增强for循环(格式.底层). 集合综合案例-斗地主(代码规范抽取代码,集合元素打乱). 数据结构[栈(先进后出,子弹夹 ...

  7. mybatis中循环map集合操作

    首先声明一个MAP集合,用来存放数据:如下图:声明map集合pd,将数据put到pd中,然后在声明一个map集合params,将pd几个放入params集合中,将params作为参数,参入xml配置文 ...

  8. 关于mybaits中如何循环map集合

    模拟请求 参数为map集合 @RequestMapping(value="/hh", method = RequestMethod.POST)public void hh() {M ...

  9. 1-17 Set集合和Map集合

    Hash表 Hash,一般翻译做"散列",也有直接音译为"哈希"的,它是基于快速存取的角度设计的,也是一种典型的**"空间换时间"**的做法 ...

  10. 集合类(collection、List、Set、Map、HashMap、TreeMap、、Properties、泛型类、可变长参数、增强for循环、Collections、数组与链表)

    集合类 0.集合类概述 1.Collection 概念 (1)Collection接口的API (2)Iterator接口(collection集合的遍历) 案例:collection集合存储学生对象 ...

最新文章

  1. php分享三十三:用php中的register_shutdown_function和fastcgi_finish_request
  2. 计算机网络技术与计算机应用技术,计算机网络技术和计算机应用技术.pdf
  3. CentOS7 安装 Jenkins( 构建 Vue 和 dotNET Core )
  4. SQL Server安全性和基于策略的管理–高级条件
  5. php 弹出指定窗口大小,弹出div或者弹出新窗口的固定位置、固定大小
  6. cocos3 动作回调函数
  7. CSS背景图像的简单响应
  8. iview render设置属性_iView 发布 3.4.0 版本,代号 BestLuck
  9. xgene:肿瘤相关基因 EGFR,,Her2,,TP53,,ALK
  10. 基于无线网络的环境监测系统
  11. iOS 视频边下边播
  12. 全面解析Linux 内核 3.10.x - Device Tree 详解
  13. Google 人工智能基本原则
  14. skyline三维地图与arcgis二维地图联动
  15. web课程设计网页规划与设计~在线阅读小说网页共6个页面(HTML+CSS+JavaScript+Bootstrap)...
  16. 8分钟带你彻底弄懂《信号与系统》
  17. Maya照明大师班:成为渲染专家
  18. 计算错误可以用计算机ac,计算器AC是什么键?
  19. 翻译Deep Learning and the Game of Go(10)第七章:从数据中学习:一个深度学习AI
  20. python给女友一个小惊喜——桌面宠物【DIY版】

热门文章

  1. MATLAB-2:基础与提高
  2. wxWidgets:展示了如何在 wxWidgets 中使用 C++ 异常
  3. wxWidgets:编写一个应用程序
  4. wxWidgets:wxString类用法
  5. wxWidgets:wxTreeCtrl概述
  6. boost::statechart::in_state_reaction相关的测试程序
  7. boost::hana::value_of用法的测试程序
  8. boost::container模块实现范围分配器用法
  9. Boost:组合异步操作的简单示例
  10. ITK:两个图像的基本全局注册