Map ,HashMap , TreeMap , TreeMap 默认排序

目录

 

总结来说:

细节描述:

Java

输出结果


总结来说:

HashMap是按照HashCode 排序,莫名其妙的顺序。 
TreeMap是按照自身的顺序排序,比如数字的话,按照数字升序,ascII等。 
LinkedHashMap是按照先进先出的顺序。

细节描述:

HashMap 的一个功能缺点是它的无序性,被存入到 HashMap 中的元素,在遍历 HashMap 时,其输出是无序的。如果希望元素保持输入的顺序,可以使用 LinkedHashMap 替代。

LinkedHashMap 继承自 HashMap,具有高效性,同时在 HashMap 的基础上,又在内部增加了一个链表,用以存放元素的顺序。

HashMap 通过 hash 算法可以最快速地进行 Put() 和 Get() 操作。TreeMap 则提供了一种完全不同的 Map 实现。从功能上讲,TreeMap 有着比 HashMap 更为强大的功能,它实现了 SortedMap 接口,这意味着它可以对元素进行排序。TreeMap 的性能略微低于 HashMap。如果在开发中需要对元素进行排序,那么使用 HashMap 便无法实现这种功能,使用 TreeMap 的迭代输出将会以元素顺序进行。LinkedHashMap 是基于元素进入集合的顺序或者被访问的先后顺序排序,TreeMap 则是基于元素的固有顺序 (由 Comparator 或者 Comparable 确定)。

LinkedHashMap 是根据元素增加或者访问的先后顺序进行排序,而 TreeMap 则根据元素的 Key 进行排序。
 

Java

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
 
/**
 * 随机保存参数
 * 按照key排序输出,验证有序性
 */
public class ATest {
	public static void main(String[] args) {
		Map map = new HashMap();
		map.put("c", "3");
		map.put("b", "2");
		map.put("a", "1");
		map.put("d", "4");
		
		System.out.print("HashMap:");
		for(String key : map.keySet()) {
			System.out.print(map.get(key) + " ");
		}
		
		Map linkedMap = new LinkedHashMap();
		linkedMap.put("c", "3");
		linkedMap.put("b", "2");
		linkedMap.put("a", "1");
		linkedMap.put("d", "4");
		
		System.out.print("LinkedHashMap:");
		for(String key : linkedMap.keySet()) {
			System.out.print(linkedMap.get(key) + " ");
		}
		
		Map treeMap = new TreeMap();
		treeMap.put("c", "3");
		treeMap.put("b", "2");
		treeMap.put("a", "1");
		treeMap.put("d", "4");
		
		System.out.print("TreeMap:");
		for(String key : treeMap.keySet()) {
			System.out.print(treeMap.get(key) + " ");
		}
	}
}

输出结果

HashMap:1 2 3 4 LinkedHashMap:3 2 1 4 TreeMap:1 2 3 4 

 

参考文档:原文转自

http://lionkingzw-hotmail-com.javaeye.com/blog/708455

https://blog.csdn.net/zhuhao717/article/details/47444763

你可能感兴趣的:(java基础)