总结一下
一.Map
public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap<>();
map.put(1, 2);
map.put(3, 4);
//1.键值一起取entrySet
for (Map.Entry<Integer, Integer> entry : map.entrySet()){
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}
//2.for 键keySet 值values 分开取
for (Integer key : map.keySet()){
System.out.println("key = " + key);
}
for(Integer value : map.values()){
System.out.println("value = " + value);
}
//3.Iterator 遍历
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while(entries.hasNext()){
Map.Entry<Integer, Integer> entry = entries.next();
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}
//4.Iterator 遍历 不使用泛型
Iterator entries1 = map.entrySet().iterator();
while(entries1.hasNext()){
Map.Entry<Integer, Integer> entry = (Map.Entry<Integer, Integer>) entries1.next();
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}
//5.键值查找
for (Integer key : map.keySet()){
System.out.println("key = " + key + ", value = " + map.get(key));
}
//6.Lambda表达式 (Java8特性,性能比entrySet低,不建议使用)
map.forEach((key, value) -> {
System.out.println(key + ":" + value);
});
}
总结:
1.只是获取key,value,用keySet,values方式
2.同时获取key和value,用entrySet
3.foreach比Iterator的写法看起来更简洁,但用foreach遍历map时,如果改变其大小,会报错,但如果只是删除元素,可以使用Iterator的remove方法删除元素
4.如果需要在遍历过程中增加元素,可以新建一个临时map存放新增的元素,等遍历完毕,再把临时map放到原来的map中。
二.List
public class Demo {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
//1.for循环
for (Integer Integer : list) {
System.out.println(Integer);
}
//2.size()的for,对于数组实现的arrayList比较快
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//3.Iterator迭代器
Iterator iterator = list.iterator();
while(iterator.hasNext()){
Integer integer = (Integer)iterator.next();
System.out.println(integer);
}
}
}