1、LinkedHashMap
一个有序的Map接口实现,可以按插入顺序或访问顺序排列。跟HashMap类似,允许null key和null值,内部维护着一个Entry数组,如果有Hash冲突会形成单链表,Entry内还多了2个before和after属性,维护着一个双向链表。
public class MainTest {
public static void main(String[] args) {
//默认情况下LinkedHashMap的遍历模式是插入顺序
LinkedHashMap<String, String> map = new LinkedHashMap<>();
map.put("name", "xmy");
map.put("age", "18");
map.put("job", "做白日梦");
map.put("good at", "吹牛B");
map.get("job");
System.out.println("----------按插入顺序遍历----------");
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> next = iterator.next();
System.out.println("key:" + next.getKey() + ";value=" + next.getValue());
}
System.out.println("----------按插入顺序遍历----------");
System.out.println("----------按get读取顺序遍历----------");
//get读取顺序 false表示的是插入模式
LinkedHashMap<String, String> redMap = new LinkedHashMap<>(16, 0.75f, true);
redMap.put("name", "xmy");
redMap.put("age", "18");
redMap.put("job", "做白日梦");
redMap.put("good at", "吹牛B");
//get()方法调用,导致对应的entry移动到双向链表的最后位置
redMap.get("job");
Iterator<Map.Entry<String, String>> iterator2 = redMap.entrySet().iterator();
while (iterator2.hasNext()) {
Map.Entry<String, String> next = iterator2.next();
System.out.println("key:" + next.getKey() + ";value=" + next.getValue());
}
System.out.println("----------按get读取顺序遍历----------");
}
}
网友评论