package cn.bl.test;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
public class TestMap {
//初始化测试参数
Map<Integer, Object>map;
@Before
public void before() {
map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
map.put(4, "d");
}
/*
* 测试map.keySet
* 如果还需要使用到value的话,就不建议使用这种方式,应该使用entrySet
* 因为这种遍历了两次,虽然基于hash比较快,但是还是遍历了两次啊
*/
@Test
public void test1() {
Set<Integer>set = map.keySet();
for (Integer key : set) {
System.out.println(key+":"+map.get(key));
}
}
/*
* 只需要value的时候可以考虑
*/
@Test
public void test2() {
for(Object o:map.values()) {
System.out.println(o);
}
}
/*
* entrySet,推荐使用的方式
* 可以直接获取k,v
*/
@Test
public void test3() {
/*Set<Entry<Integer, Object>> set = map.entrySet();
for (Entry<Integer, Object> entry : set) {
Integer key = entry.getKey();
Object value = entry.getValue();
System.out.println(key+":"+value);
}*/
for(Entry<Integer, Object> entry:map.entrySet()) {
Integer key = entry.getKey();
Object value = entry.getValue();
System.out.println(key+":"+value);
}
}
/*
* 测试map.forEach
* 这是jdk1.8的新特性了:lambda表达式
* 相当的简洁
*/
@Test
public void test4() {
map.forEach((k,v)->System.out.println(k+":"+v));
}
}