增强for循环key和value

来源:互联网 发布:网络恐吓怎么取证 编辑:程序博客网 时间:2024/06/01 20:59

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

 

0 0