1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【Java集合之Map】HashMap HashTable TreeMap LinkedHashMap区别

【Java集合之Map】HashMap HashTable TreeMap LinkedHashMap区别

时间:2021-03-07 19:43:05

相关推荐

【Java集合之Map】HashMap HashTable TreeMap LinkedHashMap区别

Java为数据结构中的映射定义了一个接口java.util.Map,它有四个实现类,分别是HashMap、HashTable、LinkedHashMap和TreeMap。本节实例主要介绍这4中实例的用法和区别

几种Map类结构

public class Hashtable extends Dictionary implements Map, Cloneable, Serializablepublic class HashMap extends AbstractMap implements Map, Cloneable, Serializablepublic class LinkedHashMap extends HashMap implements Mappublic class TreeMap extends AbstractMap implements SortedMap, NavigableMap, Cloneable, Serializablepublic interface SortedMap extends Map

接下来详细测试一下

测试

public class MapTest {public static void main(String[] args) {Map<Integer, String> hashMap = new HashMap<Integer, String>(); System.out.println("插入HashMap-key顺序:");for(int i=0; i<10; i++){Random random = new Random();int rs = random.nextInt(1000);hashMap.put(rs, "v*"+rs);System.out.println(rs);}System.out.println("HashMap集合输出:"+hashMap);Map<Integer, String> treeMap = new TreeMap<Integer, String>(); System.out.println("插入TreeMap-key顺序:");for(int i=0; i<10; i++){Random random = new Random();int rs = random.nextInt(1000);treeMap.put(rs, "v*"+rs);System.out.println(rs);}System.out.println("TreeMap集合输出:"+treeMap);Map<Integer, String> linkedHashMap = new LinkedHashMap<Integer, String>(); System.out.println("插入LinkedHashMap-key顺序:");for(int i=0; i<10; i++){Random random = new Random();int rs = random.nextInt(1000);linkedHashMap.put(rs, "v*"+rs);System.out.println(rs);}System.out.println("LinkedHashMap集合输出:"+linkedHashMap);}}

测试结果:

插入HashMap-key顺序:53112227923264452513199137468HashMap集合输出:{68=v*68, 374=v*374, 279=v*279, 991=v*991, 531=v*531, 232=v*232, 525=v*525, 644=v*644, 131=v*131, 122=v*122}插入TreeMap-key顺序:729844297424445286371883453707TreeMap集合输出:{286=v*286, 297=v*297, 371=v*371, 424=v*424, 445=v*445, 453=v*453, 707=v*707, 729=v*729, 844=v*844, 883=v*883}插入LinkedHashMap-key顺序:15253099777248481018478837951LinkedHashMap集合输出:{152=v*152, 530=v*530, 997=v*997, 772=v*772, 484=v*484, 810=v*810, 18=v*18, 478=v*478, 837=v*837, 951=v*951}

总结

共同点

HashMap,LinkedHashMap,TreeMap都属于Map;Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。

不同点

1、HashMap键无序,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,在Map 中插入、删除和定位元素,HashMap 是最好的选择;

2、LinkedHashMap 是HashMap的一个子类,键保存了插入的顺序,使用Iterator遍历时,得到的也是插入顺序的记录;

3、TreeMap默认按键的升序排序,可以定制。

4、HashTable 线程安全,键不能为null,与HashMap类似,但效率较低,HashMap如果需要实现同步,可以使用Collections. synchronizedMap或ConcurrentHashMap 。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。