java中集合的遍历:
简单测试:
package com.cn.foreach; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import org.junit.Test; public class CollectionTest { /* 单列集合的遍历 */ // List集合的遍历 // 传统方式遍历 @Test public void traverseList1() { List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); // 遍历集合 // 获得迭代器 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String value = iterator.next(); System.out.print(value + " "); } } // 使用java5新特性,增强for循环遍历 @Test public void traverseList2() { List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); for (String value : list) { System.out.print(value + " "); } } // Set集合的遍历 // 方式一,使用传统方式 @Test public void traverseSet1() { Set<String> set = new HashSet<String>(); set.add("a"); set.add("b"); set.add("c"); set.add("d"); // 获得迭代器 Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { String value = iterator.next(); System.out.print(value + " "); } } // 方式二,使用增强for循环方式遍历 @Test public void traverseSet2() { Set<String> set = new HashSet<String>(); set.add("a"); set.add("b"); set.add("c"); set.add("d"); for (String value : set) { System.out.print(value + " "); } } /* 双列集合 */ // 方式一,使用传统方式遍历 @Test public void traverseMap1() { Map<String, String> map = new HashMap<String, String>(); map.put("a", "aaa"); map.put("b", "bbb"); map.put("c", "ccc"); map.put("d", "ddd"); // 获得迭代器 Set<String> set = map.keySet(); Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { String key = iterator.next(); String value = map.get(key); System.out.println(key + "=" + value); } } // 方式二,使用传统方式二遍历 @Test public void traverseMap2() { Map<String, String> map = new HashMap<String, String>(); map.put("a", "aaa"); map.put("b", "bbb"); map.put("c", "ccc"); map.put("d", "ddd"); // 获得迭代器 Set<Entry<String, String>> setEntry = map.entrySet(); Iterator<Entry<String, String>> iterator = setEntry.iterator(); while (iterator.hasNext()) { Entry<String, String> entry = iterator.next(); String key = entry.getKey(); String value = entry.getValue(); System.out.println(key + "=" + value); } } // 方式三,使用增加for循环遍历 @Test public void traverseMap3() { Map<String, String> map = new HashMap<String, String>(); map.put("a", "aaa"); map.put("b", "bbb"); map.put("c", "ccc"); map.put("d", "ddd"); // 获得迭代器 for (Entry<String, String> entry : map.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); System.out.println(key + "=" + value); } } // 迭代过程中删除元素 @Test public void deleteElement() { List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); // 在迭代的过程中删除集合中元素,只能使用迭代器对象删除元素 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String value = iterator.next(); if (value.equals("d")) iterator.remove(); } for (String value : list) { System.out.print(value + " "); } } // 迭代过程中增加元素 @Test public void addElement() { List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); /* * 集合迭代过程中,添加元素也只能用迭代器对象添加 * Iterator类中没有add()方法,ListIterator是Iterator的子类,有add()方法 */ ListIterator<String> iterator = list.listIterator(); while (iterator.hasNext()) { iterator.next(); iterator.add("e"); } for (String value : list) { System.out.print(value + " "); } } // 增强for循环要注意的问题 // 增强for循环只适合访问容器的元素,不能对元素做修改 @Test public void testUpdate() { // 测试代码 int[] arr = { 1, 2 }; for (@SuppressWarnings("unused") int num : arr){ num++; } System.out.println(arr[0]);// 1 System.out.println(arr[1]);// 2 } }