一句话概括的说:两者最大的不同就是,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