增强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]);

 

时间: 2024-10-25 05:11:32

增强for循环,Map,集合应用的相关文章

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

一.eclipse工具的使用 1. java代码的位置        1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格        2) 新建一个java 工程(Project)        3) 建包建类   2. 快捷键        alt + / :代码自动补齐,需要配置的               打开preferences(首选项), 搜keys,打开快捷键配置面板               搜 alt+/ ,取消绑定        

Java使用增强for循环和迭代器遍历Map集合

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);       

关于list集合增强for循环报错

问题描述 关于list集合增强for循环报错 public class ForTest { public static void main(String[] args){ List list = new List(); for(int i=0;i<0x20;i++){ for(int j=0;j<i;j++){ if(j*j==i){ list.add(i+""""); break; } } } for(String s:list){ System.ou

【js jQuery】map集合 循环迭代取值---以及 map、json对象、list、array循环迭代的方法和区别

后台给前台传来一个map @ResponseBody @RequestMapping(value = "getSys") public Map<Long,String> getSys(){ Map<Long,String> map = orderService.getSysDate(); return map; }   前台js中怎么迭代呢?[注意each的使用]这只是一种方法,如果想看更多的方法和各个方法的区别,请往下看分割2. $.post("ge

java增强for循环的实现方法_java

如下所示: package cn.jdk.foreach; import java.util.HashMap; import java.util.Map; public class ForEachTest { public static void main(String[] args) { int[] arr = {1,2,3}; for(int a:arr){ System.out.println(a+"\t"); } System.out.println("=======

java xml报文解析,把name名相同的解析成一个数组存到map集合

问题描述 java xml报文解析,把name名相同的解析成一个数组存到map集合 <?xml version="1.0" encoding="GBK"?> <request version="1.0"> <query> <filed name="FundOID" type="String"></filed> <filed name=&quo

java-Java增强for循环可以嵌套使用吗

问题描述 Java增强for循环可以嵌套使用吗 大神们,那个增强for循环可不可以像普通for循环一样嵌套使用,在增强for中可以对集合进行操作么 解决方案 增强for循环跟普通for循环在使用效果上没有太大的区别,都是可以嵌套使用的, 不过不管是什么样的for循环,最好不要在循环的集合上做新增或者删除操作,这样的操作或出问题, 正确的操作是使用iterator迭代器. 解决方案二: 可以的,只是在增强循环中,一般不允许对集合进行增删等操作. 解决方案三: 可以的,不过高级for循环有一定的限制

黑马程序员 十四、Eclipse 的使用、增强 for 循环、自动拆箱与装箱等

Java帮帮-IT资源分享网 1.Eclipse 的使用技巧 eclipse 与 myeclipse 的关系(都属于 java 开发的工具): 后者是前者的一个插件,后来为了方便使用,myeclipse 集合了 eclipse,后者是收费的. 可大部分人都是用 eclipse 等常用的免费软件.最好用的因为别人都在用.这就是市场. eclipse 是 java 的一种 IDE 开发工具. 我的总结:请注意一些英文简写的含义,对应的每个单词.平时积累! 什么叫一个工程(project): 我的看法

Java基础-16总结List的子类,ArrayList,Vector,LinkedList,泛型,增强for循环,静态导入,可变参数

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:List的子类(掌握) (1)List的子类特点 ArrayList: 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector: 底层数据结构是数组,查询快,增删慢 线程安全,效率低 Linked