一 Map常见遍历方式
package com.plwf.lake.lyhf;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapTraversing {
public static void main(String[] args){
Map<String,String> map = new HashMap<>();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
//1. 普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value");
for(String key: map.keySet()){
System.out.println("key="+key+" and value= "+map.get(key));
}
//2. 通过Map.entrySet使用iterator遍历key和value 也就是迭代器
System.out.println("通过Map.entrySet使用iterator遍历key和value 也就是迭代器");
Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String,String> entry = it.next();
System.out.println("key="+entry.getKey()+" and value= "+entry.getValue());
}
//3. 推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//4. 通过Map.values()遍历所有的value,但不能遍历key
for (String v : map.values()) {
System.out.println("value= " + v);
}
//5. lambda遍历map
map.forEach((k,v)-> System.out.println(k+"-<key=====value->"+v));
}
}
一 Set常见遍历方式
package com.plwf.lake.lyhf;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
public class SetTraversing {
public static void main(String[] args) {
//Hashset 它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变
Set<String> set = new HashSet<>();
set.add("value1");
set.add("value2");
set.add("value3");
//LinkedHashSet 定义了迭代顺序,即按照将元素插入到集合中的顺序(插入顺序)进行迭代
Set<String> setOrder = new LinkedHashSet<>();
setOrder.add("value1");
setOrder.add("value2");
setOrder.add("value3");
//1. 迭代遍历
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
//2. for循环遍
for (String str : setOrder) {
System.out.println(str);
}
//2-1. 增强型for循环 优点还体现在泛型 假如:set中存放的是Object
Set<Object> setObject = new HashSet<>();
setObject.add(111);
setObject.add("222");
for (Object obj : setObject) {
if (obj instanceof Integer) {
int resultValue = (Integer) obj;
System.out.println("Integer:" + resultValue);
} else if (obj instanceof String) {
String resultValue = (String) obj;
System.out.println("String:" + resultValue);
}
}
//3. 集合类的通用遍历方式, 从很早的版本就有, 用迭代器迭代
for (Iterator it2 = set.iterator(); it2.hasNext(); ) {
System.out.println(it2.next());
}
//4. jdk1.8之后
set.forEach(System.out::println);
}
}
List 遍历方式
package com.plwf.lake.lyhf;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class ListTraversing {
public static void main(String[] args) {
// 有序元素 可重复 遍历
List<String> arrayList=new ArrayList<>();
arrayList.add("value1");
arrayList.add("value2");
//1. foreach遍历(不需要index推荐)
for(String str:arrayList){
System.out.println(str);
}
//2. for遍历(需要index推荐)
for (int i=0,n=arrayList.size(); i < n ; i++) {
System.out.println(arrayList.get(i));
}
//3. 迭代器遍历
Iterator<String> it = arrayList.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
//4. jdk1.8之后
arrayList.forEach(System.out::println);
//5.使用ListIterator
ListIterator<String> listIt = arrayList.listIterator();
while(listIt.hasNext())
{
System.out.println(listIt.next());
}
}
}
拾荒者的笔记:原文链接