遍历Map
package com.code.ggsddu;
import org.junit.Test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class AboutMap {
@Test
public void mapTraversal() {
Map<String, Object> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
// 增强for循环遍历key
for (String key : map.keySet()) {
System.out.println(key);
}
// // 增强for循环遍历value
for (Object value : map.values()) {
System.out.println(value);
}
// 效率极低
for (String key : map.keySet()) {
System.out.println(key);
System.out.println(map.get(key));
}
/**
* Map.Entry
* 描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。
*/
// 通过Map.entrySet遍历key和value(推荐,尤其是容量大时)
for (Map.Entry<String, Object> entry : map.entrySet()) {
entry.getKey();
entry.getValue();
}
// 通过Map.entrySet使用iterator遍历key和value
Iterator<Map.Entry<String, Object>> entryIterator = map.entrySet().iterator();
while (entryIterator.hasNext()) {
Map.Entry<String, Object> entry = entryIterator.next();
System.out.println(entry.getKey() + ", " + entry.getValue());
}
// lambda表达式
map.forEach((key, value) -> System.out.println("key: " + key + ", value: " + value));
}
}
遍历List
package com.code.ggsddu;
import org.junit.Test;
import java.util.*;
public class AboutList {
@Test
public void listTraversal() {// 遍历List
List<Object> list = Arrays.asList(0, 1, 2, 3, 4, 5, 6);
// List转数组后遍历数组
Object[] arr = list.toArray();
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
// 增强for循环
for (Object obj : list) {
System.out.print(obj + " ");
}
// 用迭代器遍历集合框架,它是一个对象,实现了Iterator接口或ListIterator接口。
// 采用迭代器的方法,该方法可以不用担心在遍历的过程中会超出集合的长度。
Iterator<Object> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
/**
* Lambda表达式
* Java8之前, 集合类的迭代(Iteration)都是外部的,即客户代码。
* 而内部迭代意味着改由Java类库来进行迭代,而不是客户代码。
*/
list.forEach(obj -> {
System.out.print(obj + " ");
});
}
}
网友评论