一、HashMap遍历
1.1 foreach遍历key,——keySet() + get(key)
——普遍使用,二次取值
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"asd");
map.put(2,"dgh");
map.put(3,"awe");
map.put(4,"ytr");
for(Integer key:map.keySet()){
System.out.println(key + " " + map.get(key));
}
}
}
【面试题】输出HashMap中含有字符’a’的元素
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"asd");
map.put(2,"dgh");
map.put(3,"awe");
map.put(4,"ytr");
for(Integer key : map.keySet()){
String value = map.get(key);
if(value.contains("a")){
System.out.println(value);
}
}
}
}
1.2 迭代器遍历
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"asd");
map.put(2,"dgh");
map.put(3,"awe");
map.put(4,"ytr");
Iterator<Integer> it = map.keySet().iterator();
while(it.hasNext()){
int key = it.next();
System.out.println(key+" "+map.get(key));
}
}
}
Iterator 的特点是更加安全,因为它可以确保:在当前遍历的集合元素被更改的时候,就会抛出 ConcurrentModificationException 异常。
迭代器是一种设计模式,是一个对象,可以遍历并选择序列中的对象。
next():获得下一个元素;
hasNext():检查序列中是否还有元素;
remove():删除元素
Enumeration接口和Iterator接口的区别有哪些?
Enumeration速度是Iterator的2倍,同时占用更少的内存。但是,Iterator远远比Enumeration安全,因为其他线程不能够修改正在被iterator遍历的集合里面的对象。同时,Iterator允许调用者删除底层集合里面的元素,这对Enumeration来说是不可能的。
1.3 Map.Entry——适合容量大的情况
——Entry中保存的是key和value,通过entrySet()遍历出来,再通过entry.getKey()和entry.getValue()来获取键值对。
import java.util.*;
public class Main1 {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"asd");
map.put(2,"dgh");
map.put(3,"awe");
map.put(4,"ytr");
for(Map.Entry<Integer,String> entry:map.entrySet()){
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}
二、ArrayList遍历
2.1 迭代器遍历
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(2);
list.add(4);
list.add(6);
list.add(8);
list.add(0);
Iterator<Integer> it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}