增强for循环,Map,集合应用
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,集合应用相关推荐
- 增强For循环以及集合遍历语法糖
什么是增强For 增强for循环是for的一种新用法!用来循环遍历数组和集合.优缺点:只能从头到尾的遍历数组或集合,而不能只遍历部分:在遍历List或数组时,不能获取当前元素下标:增强for使 ...
- java 循环map 优雅写法_Java for循环Map集合优化实现解析
这篇文章主要介绍了java for循环map集合优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在<for循环实战性能优化> ...
- Lambda表达式之循环map集合
通常我们循环一个map集合会有三种方法(在jdk1.8之前) 链接如下: map循环三种方式 jdk1.8多了lambda表达式之后 我们可以更优雅的循环map集合,用最少最清晰的代码展现其内容 代码 ...
- java for循环map赋值_Java for循环Map集合优化实现解析
这篇文章主要介绍了Java for循环Map集合优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在<for循环实战性能优化> ...
- 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型
一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace 选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Project) 3) ...
- Java基础加强重温_05:Iterator迭代器、增强for循环、集合综合案例-斗地主、数据结构(栈、队列、数组、链表、红黑树)、List接口、Set接口
摘要: Java基础加强重温_05: Iterator迭代器(指针跟踪元素). 增强for循环(格式.底层). 集合综合案例-斗地主(代码规范抽取代码,集合元素打乱). 数据结构[栈(先进后出,子弹夹 ...
- mybatis中循环map集合操作
首先声明一个MAP集合,用来存放数据:如下图:声明map集合pd,将数据put到pd中,然后在声明一个map集合params,将pd几个放入params集合中,将params作为参数,参入xml配置文 ...
- 关于mybaits中如何循环map集合
模拟请求 参数为map集合 @RequestMapping(value="/hh", method = RequestMethod.POST)public void hh() {M ...
- 1-17 Set集合和Map集合
Hash表 Hash,一般翻译做"散列",也有直接音译为"哈希"的,它是基于快速存取的角度设计的,也是一种典型的**"空间换时间"**的做法 ...
- 集合类(collection、List、Set、Map、HashMap、TreeMap、、Properties、泛型类、可变长参数、增强for循环、Collections、数组与链表)
集合类 0.集合类概述 1.Collection 概念 (1)Collection接口的API (2)Iterator接口(collection集合的遍历) 案例:collection集合存储学生对象 ...
最新文章
- php分享三十三:用php中的register_shutdown_function和fastcgi_finish_request
- 计算机网络技术与计算机应用技术,计算机网络技术和计算机应用技术.pdf
- CentOS7 安装 Jenkins( 构建 Vue 和 dotNET Core )
- SQL Server安全性和基于策略的管理–高级条件
- php 弹出指定窗口大小,弹出div或者弹出新窗口的固定位置、固定大小
- cocos3 动作回调函数
- CSS背景图像的简单响应
- iview render设置属性_iView 发布 3.4.0 版本,代号 BestLuck
- xgene:肿瘤相关基因 EGFR,,Her2,,TP53,,ALK
- 基于无线网络的环境监测系统
- iOS 视频边下边播
- 全面解析Linux 内核 3.10.x - Device Tree 详解
- Google 人工智能基本原则
- skyline三维地图与arcgis二维地图联动
- web课程设计网页规划与设计~在线阅读小说网页共6个页面(HTML+CSS+JavaScript+Bootstrap)...
- 8分钟带你彻底弄懂《信号与系统》
- Maya照明大师班:成为渲染专家
- 计算错误可以用计算机ac,计算器AC是什么键?
- 翻译Deep Learning and the Game of Go(10)第七章:从数据中学习:一个深度学习AI
- python给女友一个小惊喜——桌面宠物【DIY版】
热门文章
- MATLAB-2:基础与提高
- wxWidgets:展示了如何在 wxWidgets 中使用 C++ 异常
- wxWidgets:编写一个应用程序
- wxWidgets:wxString类用法
- wxWidgets:wxTreeCtrl概述
- boost::statechart::in_state_reaction相关的测试程序
- boost::hana::value_of用法的测试程序
- boost::container模块实现范围分配器用法
- Boost:组合异步操作的简单示例
- ITK:两个图像的基本全局注册