Java8和Java7的Map和List遍历对比总结
一、List遍历
public class LambdaList {
private List<String> list = new ArrayList<>();
@Before
public void initData() {
list.add("One");
list.add("Two");
list.add("Three");
list.add("Four");
list.add("Five");
list.add("Six");
list.add("Seven");
list.add("Eight");
list.add("Nine");
list.add("Ten");
}
/**
* 在Java7的遍历方式
*/
@Test
public void testErgodicWayBeforeJava8() {
System.out.println("ErgodicWayOne------> fori");
for (int i = 0; i < list.size(); i++) {
System.out.println("list.get(i) = " + list.get(i));
}
System.out.println("ErgodicWayOne------> foreach");
for (String ele : list) {
System.out.println("ele = " + ele);
}
System.out.println("ErgodicWayOne------> iterator");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println("iterator.next() = " + iterator.next());
}
}
/**
* 在Java8中的遍历方式
*/
@Test
public void testErgodicWayJava8() {
list.forEach(str-> System.out.println(str))
}
}
二、Map遍历
public class LambdaMap {
private Map<String, Object> map = new HashMap<>();
@Before
public void initData() {
map.put("key1", "One");
map.put("key2", "Two");
map.put("key3", "Three");
map.put("key4", 4);
map.put("key5", 5);
}
/**
* 遍历Map的方式一
* 通过Map.keySet遍历key和value
*/
@Test
public void testErgodicWayOne() {
System.out.println("---------------------JAVA7 ------------------------------");
for (String key : map.keySet()) {
System.out.println("map.get(" + key + ") = " + map.get(key));
}
System.out.println("---------------------JAVA8 ------------------------------");
map.keySet().forEach(key -> System.out.println("map.get(" + key + ") = " + map.get(key)));
}
/**
* 遍历Map第二种
* 通过Map.entrySet使用Iterator遍历key和value
*/
@Test
public void testErgodicWayTwo() {
System.out.println("--------------------- JAVA7 ------------------------------");
Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Object> entry = iterator.next();
System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue());
}
System.out.println("---------------------JAVA8 ------------------------------");
map.entrySet().iterator().forEachRemaining(item -> System.out.println("key:value=" + item.getKey() + ":" + item.getValue()));
}
/**
* 遍历Map第三种
* 通过Map.entrySet遍历key和value,在大容量时推荐使用
*/
@Test
public void testErgodicWayThree() {
System.out.println("--------------------- JAVA7 ------------------------------");
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue());
}
System.out.println("---------------------JAVA8 ------------------------------");
map.entrySet().forEach(entry -> System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue()));
}
/**
* 遍历Map第四种
* 通过Map.values()遍历所有的value,但不能遍历key
*/
@Test
public void testErgodicWayFour() {
System.out.println("--------------------- JAVA7 ------------------------------");
for (Object value : map.values()) {
System.out.println("map.value = " + value);
}
System.out.println("---------------------JAVA8 ------------------------------");
map.values().forEach(System.out::println); // 等价于map.values().forEach(value -> System.out.println(value));
}
/**
* 遍历Map第五种
* 通过k,v遍历,Java8独有的
*/
@Test
public void testErgodicWayFive() {
map.forEach((k, v) -> System.out.println("key:value = " + k + ":" + v));
}
}
未完,待完善