package com.collection.jdk15;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.junit.Test;
/*
JDK1.5新特性 ---> 增强for循环
增强for循环的作用:简化迭代器的书写格式;
增强for循环的适应范围:如果是实现了Iterable接口的对象或者是数组对象都可以使用增强for循环;
增强for循环的格式:
for (变量类型 变量名 : 遍历的目标){
}
增强for循环的注意事项:
1、增强for循环底层也是使用了迭代器来实现的,只不过获取迭代器有jvm完成;所以在增强for循环遍历元素的过程中,
不能使用集合对象的方法对元素的个数进行修改;
2、迭代器与增强for循环的区别:使用迭代器遍历集合的元素时,可以删除集合的元素;而增强for循环遍历集合的时候,
不能调用集合的remove()方法删除元素;
3、普通for循环和增强for循环的区别:普通for循环可以没有遍历的目标,而增强for循环必须要有遍历的目标;
*/
public class Demo2 {
private static Set<String> set = new HashSet<String>();
static{
set.add("张三");
set.add("李四");
set.add("王五");
}
// 使用迭代器迭代所有元素
@Test
public void test1(){
// 遍历集合元素
Iterator<String> it = set.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
// 使用增强for循环遍历所有元素
@Test
public void test2(){
for (String str : set){
System.out.println(str);
}
for (String str : set){
System.out.println(str);
set.remove("张三"); // 错误
}
}
// 遍历数组
@Test
public void test3(){
int[] arr = {2, 4, 8, 5};
// 普通for循环遍历
for (int i = 0; i < arr.length; i++){
System.out.println("普通for循环:" + arr[i]);
}
// 增强for循环遍历
for (int i : arr){
System.out.println("增强for循环:" + i);
}
}
// 普通for循环与增强for循环的区别
@Test
public void test4(){
// 需求:输出5句Hello World
for (int i = 0; i < 5; i++){
System.out.println("Hello World");
}
// 增强for循环就比较麻烦
// for (String str : 遍历目标){
//
// }
}
// 使用增强for循环遍历Map集合
@Test
public void test5(){
Map<String, String> map = new HashMap<String, String>();
map.put("001", "张三");
map.put("002", "李四");
map.put("003", "王五");
// 注意:Map集合没有实现 Iterable 接口,所以Map集合不能直接使用增强for循环;
// 需要将Map集合转换成Set集合;
Set<Entry<String, String>> entrySets = map.entrySet();
for (Entry<String, String> entry : entrySets){
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + " --- " + value);
}
}
}
06-15
1430