for循环遍历的盗版笔记
遍历一个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循环遍历的盗版笔记的更多相关文章
- To Java程序员:切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- *使用while循环遍历数组创建索引和自增索引值
package com.chongrui.test;/* *使用while循环遍历数组 * * * */public class test { public static void main ...
- 【转】ArrayList循环遍历并删除元素的常见陷阱
转自:https://my.oschina.net/u/2249714/blog/612753?p=1 在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出b ...
- sqlserver中的循环遍历(普通循环和游标循环)
sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student
- php中的循环遍历 foreach list each
foreach语句遍历数组foreach语句用于循环遍历数组,每进行一次循环,当前数组元素的值就会被赋值给变量value(也可以是其它变量),数组指针会逐一的移动. 代码示例: foreach($ar ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)
主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析
最新最准确内容建议直接访问原文:ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性 ...
- php用压栈的方式,循环遍历无限级别的数组(非递归方法)
php用压栈的方式,循环遍历无限级别的数组(非递归方法) 好久不写非递归遍历无限级分类...瞎猫碰到死老鼠,发刚才写的1段代码,压栈的方式遍历php无限分类的数组... php压栈的方式遍历无限级别数 ...
- json原理和jquey循环遍历获取所有页面元素
1.json原理: javascript object notation (javascript 对象表示法) 是一种轻量级的数据交换语言,由javascript衍生而出,适用于.NET java c ...
- 编写高质量代码改善C#程序的157个建议[动态数组、循环遍历、对象集合初始化]
前言 软件开发过程中,不可避免会用到集合,C#中的集合表现为数组和若干集合类.不管是数组还是集合类,它们都有各自的优缺点.如何使用好集合是我们在开发过程中必须掌握的技巧.不要小看这些技巧,一旦在开 ...
随机推荐
- 【Windows】Win10 20H2版本 管理员身份问题
问题描述: 从之前的1909版本升级过来的,在一开始就是管理员身份,升级之后还是管理员身份没错 但是打开一些软件又会开始提示是否安全,还有C盘访问权限警告. 解决办法: 参考方案地址 http://w ...
- 【Spring-Security】Re12 JsonWebToken
一.认证机制种类: 1.HTTP-Basic-Auth 每次请求接口必须提供账号信息[username + password] 但是信息有暴露风险,配合RestFul风格使用,逐渐淘汰 2.Cooki ...
- 机器学习经典教材《模式识别与机器学习》,Pattern Recognition and Machine Learning,PRML官方开放免费下载
微软剑桥研究院实验室主任Christopher Bishop的经典著作<模式识别与机器学习>,Pattern Recognition and Machine Learning,简称PRML ...
- Linux系统配置 Samba客户端
参考: https://blog.csdn.net/m0_63624418/article/details/127856957 本文为局域网中linux和window共享文件方案--samba后续篇. ...
- vue之事件监听v-on
1.背景 2.简单使用 2.1.做一个简单的点击计数器 <!DOCTYPE html> <html lang="en" xmlns:v-on="http ...
- http与https通俗易懂的原理解析
1.背景 经常都在说http.https,都知道https是安全的, 但是, 为什么说http不安全呢? 为什么又说https是安全的呢? 接下来我将使用通俗易懂的方式给大家分析一下....... 2 ...
- 朋友吐槽我为什么这么傻不在源生成器中用string.GetHashCode, 而要用一个不够优化的hash方法
明明有更好的hash方法 有位朋友对我吐槽前几天我列举的在源生成器的生成db映射实体的优化点 提前生成部分 hashcode 进行比较 所示代码 public static void Generate ...
- Infinity颜值与实用兼备的新标签页,高效书签管理必选的浏览器扩展
浏览器是我们互联网冲浪的必备平台,但是在使用浏览器的过程中,我们经常会遇到标签页和书签管理的问题.过多的标签页和书签会导致浏览器变得杂乱无章,不利于我们快速查找需要的内容.为了提高我们的工作和学习效率 ...
- CH02_数据类型
CH02_数据类型 数据类型 整型 描述:整型变量表示的是整型类型的数据,C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同. 数据类型 占用空间 取值范围 short(短整型) 2字 ...
- Flex相册
有一个项目用到了Flex,于是抽时间用flex与java做了一个相册,并且添加了上传功能,不过暂时没有针对具体的用户进行存储.下面是图片: