Java的HashMap与LinkedHashMap异同



一句话概括的说:两者最大的不同就是,HashMap不保证put进去的数据的顺序;而LinkedHashMap则保证put进去的数据的顺序。换句话也就是说,HashMap添加进去的数据顺序和遍历时的数据顺序不一定;而LinkedHashMap则保证添加时数据顺序是什么,遍历时数据顺序是什么。

例如,假如在HashMap中依次、顺序添加元素:1,2,3,4,5,在遍历HashMap时输出的顺序可能是:3,2,1,4,5。

但是,假如在LinkedHashMap中依次、顺序添加元素:1,2,3,4,5,在遍历时输出的顺序就是添加操作是的原始顺序:1,2,3,4,5。

代码演示:

import java.util.HashMap;
import java.util.LinkedHashMap;

/*
 * 添加10个元素,然后输出,比较HashMap与LinkedHashMap的输出结果异同。
 * */

public class Map {

	public static void main(String[] args) {
		HashMap<String, Integer> map1 = new HashMap<String, Integer>();
		LinkedHashMap<String, Integer> map2 = new LinkedHashMap<String, Integer>();

		String key = "key";
		for (int i = 0; i < 10; i++) {
			map1.put(key + i, i);
			map2.put(key + i, i);
		}

		System.out.println("HashMap:");
		for (String k : map1.keySet()) {
			System.out.println(k + " " + map1.get(k));
		}

		System.out.println();

		System.out.println("LinkedHashMap:");
		for (String k : map2.keySet()) {
			System.out.println(k + " " + map2.get(k));
		}
	}
}

输出结果:

HashMap:
key4 4
key3 3
key6 6
key5 5
key0 0
key2 2
key1 1
key8 8
key7 7
key9 9

LinkedHashMap:
key0 0
key1 1
key2 2
key3 3
key4 4
key5 5
key6 6
key7 7
key8 8
key9 9
时间: 2024-11-05 13:34:06

Java的HashMap与LinkedHashMap异同的相关文章

JDK源码学习(4)-java.util.HashMap、LinkedHashMap与TreeMap

一.HashMap 该类的节点Node类为: static class Node<K,V> implements Map.Entry<K,V> {         final int hash;         final K key;         V value;         Node<K,V> next;         Node(int hash, K key, V value, Node<K,V> next) {             th

Java HashMap与LinkedHashMap的区别

HashMap与LinkedHashMap是Map接口的两个实现类,它们最大的区别就是HashMap的元素是无序存放的,LinkedHashMap的元素是有序存放的,示例: Map<String, Integer> hashMap = new HashMap<String, Integer>(); Map<String, Integer> linkedHashMap = new LinkedHashMap<String, Integer>(); for (i

【Simple Java】HashMap vs TreeMap vs Hashtable vs LinkedHashMap

Map是一个重要的数据结构,本篇文章将介绍如何使用不同的Map,如HashMap,TreeMap,HashTable和LinkedHashMap. Map概览 Java中有四种常见的Map实现,HashMap,TreeMap,HashTable和LinkedHashMap,我们可以使用一句话来描述各个Map,如下: HashMap:基于散列表实现,是无序的: TreeMap:基于红黑树实现,按Key排序: LinkedHashMap:保存了插入顺序: Hashtable:是同步的,与HashMa

[Java基础要义]HashMap、LinkedHashMap元素遍历机制探讨

Map作为键值对Entry<K,V>的的容器,对其内部 键值对Entry<K,V> 的遍历总归是要有一个顺序的. 本文重点讨论HashMap及其子类LinkedHashMap的遍历机制,总结出两者的特点和适用情况.  CSDN-2014博客之星投票啦 CSDN-2014博客之星   评选开始啦,如果您觉得我的文章对您有所帮助,请您点击左边栏的图片投我一票,您的支持是我分享知识的强大动力! 1.HashMap的遍历机制 HashMap 提供了两个遍历访问其内部元素Entry<k

深入理解 hash 函数、HashMap、LinkedHashMap、TreeMap 【中】

LinkedHashMap - 有序的 HashMap 我们之前讲过的 HashMap 的性能表现非常不错,因此使用的非常广泛.但是它有一个非常大的缺点,就是它内部的元素都是无序的.如果在遍历 map 的时候, 我们希望元素能够保持它被put进去时候的顺序,或者是元素被访问的先后顺序,就不得不使用 LinkedHashMap. LinkdHashMap 继承了 HashMap,因此,它具备了 HashMap 的优良特性-高性能.在HashMap 的基础上, LinkedHashMap 又在内部维

HashMap Hashtable LinkedHashMap 和TreeMap

java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap. Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复. HashMap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的. HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;

How java implements HashMap

1. How java implements HashMap HashMap Custom implementation in java - How HashMap works internally with diagrams and full program http://www.javamadesoeasy.com/2015/02/hashmap-custom-implementation.html 2. HashMap interview question 17.在Java中,HashMa

深入理解 hash 函数、HashMap、LinkedHashMap、TreeMap 【上】

前言 Map 是非常常用的一种数据接口.在 Java 中,提供了成熟的 Map 实现. 图 1 最主要的实现类有 Hashtable.HashMap.LinkedHashMap和 TreeMap.在 HashTable 的子类中,还有 Properties的实现.Properties 是专门读取配置文件的类,我们会在稍后介绍.这里首先值得关注的是 HashMap 和 HashTable 两套不同的实现,两者都实现了 Map 接口.从表面上看,并没有多大差别,但是在内部实现上却有些微小的细节. 首

HashMap和LinkedHashMap的比较使用

由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下. import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; public class TestLinkedHashMap {   public static void main(String args[])   {    System.out.println("**