Java中的Map,Set,List遍历
2018-09-17 本文已影响0人
Java_Pro
1. Map的5种遍历方法
package com.grandage.test;
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.
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));
}
}
2.Set遍历的4种方法
package com.utils;
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);
}
}
3.List集合的5种遍历方式
package com.utils;
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());
}
}
}
博客的所有作品采用
CC0 1.0 通用 (CC0 1.0)公共领域贡献进行许可