精华内容
下载资源
问答
  • java为数据结构中的映射定义了一个接口java.util.Map,而HashMap Hashtable和TreeMap就是它的实现类。Map是将键映射到值的对象,一个映射不能包含重复的键;每个键最多只能映射一个一个值。 Hashmap 是一个最常用的...

     

    java为数据结构中的映射定义了一个接口java.util.Map,而HashMap Hashtable和TreeMap就是它的实现类。Map是将键映射到值的对象,一个映射不能包含重复的键;每个键最多只能映射一个一个值。

    Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力.

    Hashtable 与 HashMap类似,但是主要有6点不同。

    1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。

    2.HashTable不允许null值,key和value都不可以,HashMap允许null值,key和value都可以。HashMap允许 key值只能由一个null值,因为hashmap如果key值相同,新的key, value将替代旧的。

    3.HashTable有一个contains(Object value)功能和containsValue(Object value)功能一样。

    4.HashTable使用Enumeration,HashMap使用Iterator。

    5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

    6.哈希值的使用不同,HashTable直接使用对象的hashCode。

    import java.util.Map; 
    import java.util.HashMap; 
    import java.util.Set; 
    import java.util.HashSet;   
    import java.util.Iterator;   
    import java.util.Hashtable;   
    import java.util.TreeMap;   
    class  HashMaps   {  
     public static void main(String[] args)   {  
     Map map=new HashMap();  
     map.put(“a”, “aaa”);  
     map.put(“b”, “bbb”);   
     map.put(“c”, “ccc”);   
     map.put(“d”, “ddd”);   
    Iterator iterator = map.keySet().iterator();   
    while (iterator.hasNext()) {  
     Object key = iterator.next();   
    System.out.println(“map.get(key) is :”+map.get(key));   } 
      Hashtable tab=new Hashtable();   tab.put(“a”, “aaa”);  
     tab.put(“b”, “bbb”);  
     tab.put(“c”, “ccc”);  
     tab.put(“d”, “ddd”);   
    Iterator iterator_1 = tab.keySet().iterator();  
     while (iterator_1.hasNext()) { 
      Object key = iterator_1.next(); 
      System.out.println(“tab.get(key) is :”+tab.get(key)); 
      }   TreeMap tmp=new TreeMap();  
      tmp.put(“a”, “aaa”); 
      tmp.put(“b”, “bbb”);  
      tmp.put(“c”, “ccc”); 
      tmp.put(“d”, “ddd”); 
      Iterator iterator_2 = tmp.keySet().iterator(); 
      while (iterator_2.hasNext()) {  
      Object key = iterator_2.next(); 
      System.out.println(“tmp.get(key) is :”+tmp.get(key));  
     }   
     }  
     }
    


     

    展开全文
  • HashMap TreeMap专题

    2019-11-26 17:06:26
    刷leetcode的时候,经常性碰到需要使用HashMap或者TreeMap的场景,今天来总结一些它们的用法: TreeMap public class MapCase { public static void main(String[] args) { HashMap<Integer,Integer> map...

    刷leetcode的时候,经常性碰到需要使用HashMap或者TreeMap的场景,今天来总结一些它们的用法:


    TreeMap

    public class MapCase {
        public static void main(String[] args) {
            HashMap<Integer,Integer> maphash = new HashMap<>();
            TreeMap<Integer,Integer> maptree = new TreeMap<>();
    
            maptree.put(1,12);
            maptree.put(2,15);
            maptree.put(3,13);
            maptree.put(4,16);
            maptree.put(5,10);
        }
    }
    

    首先是如何遍历上面的TreeMap ?

       // 遍历
      Iterator iter0 = maptree.entrySet().iterator();
      while (iter0.hasNext()){
          Map.Entry entry =(Map.Entry) iter0.next();
          System.out.print("键:"+ entry.getKey());
          System.out.println(" 值: "+entry.getValue());
      }
    

    其次,如果要按照value倒序输出,该怎么设计? 因为TreeMap底层是红黑树,所以决定了从本身构建来考虑是不行的,所以另辟蹊径,我们尝试把它放到list中,对list排序规则进行更改。

     List<Map.Entry<Integer, Integer>> list = new ArrayList<>(maptree.entrySet());
     Collections.sort(list, (o1, o2) -> o2.getValue().compareTo(o1.getValue()));
     System.out.println("倒序:");
     for(int i = 0; i<list.size(); i++)
         System.out.println("键: "+list.get(i).getKey()+ "值:"+ list.get(i).getValue());
    

    暂时先写到这里,后面会继续补充的。

    展开全文
  • HashTable HashMap TreeMap 本质区别1. hashTable 线程安全 不允许有null的键和值 效率低 方法是Synchronized的 HashTable 数组默认大小是11 增加方式为 old*2+1 HashTable 使用Enumeration(枚举)方式实现2....

    HashTable HashMap TreeMap 本质区别

    1.      hashTable 线程安全  不允许有null的键和值  效率低  方法是Synchronized的

            HashTable 数组默认大小是11  增加方式为 old*2+1

            HashTable 使用Enumeration(枚举)方式实现

    2.      HashMap  线程不安全  允许有null的键和值  效率高一点  方法不是Synchronize要提供的同步

            HashMap  数组默认大小是16  增长方式是2的指数倍

            HashMap  使用Interator(迭代方式)调用

    3.      TreeMap 能够保存记录 按照键排序 默认升序排序

     

    HashTable HashMap TreeMap 使用区别

    1.      HashMap 的元素排序方式不固定 (通过hashcode对其内容进行快速查找)

            TreeMap 的元素都保持固定排序模式

    2.      HashMap 适用于 在Map中插入 删除 定位元素

            TreeMap  适用于按照自然顺序或自定义排序遍历键key

    分析: 一般情况 HashMap比TreeMap 快一些  若需要排序的Map 才使用TreeMap

    展开全文
  • HashMap TreeMap区别

    2019-09-27 09:47:27
    Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;...

    Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复就覆盖了),但允许值重复。
    Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。
    Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。
    LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。
    TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

    一般情况下,我们用的最多的是HashMap,HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。
    TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
    LinkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列,像连接池中可以应用。

     

     

    1. HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key
    2. Map的key和Set都有一个共同的特性就是集合的唯一性.TreeMap更是多了一个排序的功能.
    3. hashCode和equal()是HashMap用的, 因为无需排序所以只需要关注定位和唯一性即可.
       a. hashCode是用来计算hash值的,hash值是用来确定hash表索引的.
       b. hash表中的一个索引处存放的是一张链表, 所以还要通过equal方法循环比较链上的每一个对象
           才可以真正定位到键值对应的Entry.
       c. put时,如果hash表中没定位到,就在链表前加一个Entry,如果定位到了,则更换Entry中的value,并返回旧value
    4. 由于TreeMap需要排序,所以需要一个Comparator为键值进行大小比较.当然也是用Comparator定位的.
       a. Comparator可以在创建TreeMap时指定
       b. 如果创建时没有确定,那么就会使用key.compareTo()方法,这就要求key必须实现Comparable接口.
       c. TreeMap是使用Tree数据结构实现的,所以使用compare接口就可以完成定位了.

     

     

    注意: 
    1、Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。 
    2、Set和Collection拥有一模一样的接口。 
    3、List,可以通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0)...。(add/get) 
    4、一般使用ArrayList。用LinkedList构造堆栈stack、队列queue。 
    5、Map用 put(k,v) / get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。 
          HashMap会利用对象的hashCode来快速找到key。 
        *     hashing 
              哈希码就是将对象的信息经过一些转变形成一个独一无二的int值,这个值存储在一个array中。 
              我们都知道所有存储结构中,array查找速度是最快的。所以,可以加速查找。 
          
              发生碰撞时,让array指向多个values。即,数组每个位置上又生成一个梿表。 
    6、Map中元素,可以将key序列、value序列单独抽取出来。 
    使用keySet()抽取key序列,将map中的所有keys生成一个Set。 
    使用values()抽取value序列,将map中的所有values生成一个Collection。 
    为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复。 

    转载于:https://www.cnblogs.com/Syney/p/7568566.html

    展开全文
  • HashMap TreeMap区别

    2016-04-11 12:36:42
    首先介绍一下什么是Map。在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过...TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMapHashMap中元素的排列顺序
  • HashMap TreeMap Hashtable LinkedHashMap 区别

    千次阅读 2015-09-27 14:18:18
    map是java中最常用的数据结构之一,在这篇文中,我将说明如何使用不同类型的maps,比如:HashMapTreeMap,HashTable和LinkedHashMap。 Map概览 在java SE 中有4个Map常用的实现,分别是HashMapTreeMap,...
  • hashmap treemap

    2012-08-14 08:43:55
    treemap是按照key排序的,如果需要排序的key value对,还是用这个吧。当然因为是有序的,是实现了map之外,还实现了sortedmap,所以如果你不需要顺序,只需要随机插入、删除、查找等操作的话,还是用hashmap吧。 ...
  • HashTable,HashMap,TreeMap区别? 共同点:都是Map的子类或者间接子类,以键值对的形式存储和操作数据。 区别如下表: 项目 线程安全 是否支持null键值 使用场景 HashTable 是 不支持 java早期hash实现...
  • 参考:http://blog.csdn.net/xiaodifa995455120/article/details/7277441 ...tid=52426 Hashmap 是一个 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最...
  • 首先简单说一下他们之间的区别HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null...
  • 1.HashMap里面存入的键值对在取出的时候是随机的,也是我们最常用的一个Map.它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。  ...
  • Map HashMap TreeMap用法

    2018-08-19 10:42:49
    map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):  HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以...
  • Map:HashMap TreeMap LinkedHashMap 三者中只有TreeMap是有序的,当需要使用keySet()方法时,从TreeMap取出的key是按照对象(可进行比较即实现了Comparable接口)的比较方法排列的, LinkedHashMap取出的key是...
  • Map集合HashMap TreeMap的输出方法

    千次阅读 2016-07-17 21:43:04
    Map集合HashMap TreeMap的输出方法  【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/50990663 集合的输出方式:  Collection、Set集合中的内容可以通过toArray()方法转换为...
  • hashMaptreeMap区别

    2021-03-28 14:51:29
    hashMaptreeMap区别 参考网址: https://mp.weixin.qq.com/s/tHaw9w8h8buyjRx21XzB8g 提出问题 如何决定使用 HashMap 还是 TreeMap? hashMap和treeMap简介 TreeMap<K,V>的Key值是要求实现java.lang....
  • HashMap 为倒序 LinkedHashMap为正序
  • HashSet TreeSet LinkedList ArrayList Hashmap Treemap,哪些里边的对象是不能重复的,哪些是自动排序的,在使用自定义类型对象判断比较时,哪些需要重写equals,哪些需要重写compareTo。总结如下   首先它们6个是...
  • HashSet 和 HashMap 有啥区别? 底层都使用的是哈希算法 根据面向对象算法来分析 一套算法 两个类使用 HashSet底层是依赖HashMap去实现的 添加进Set中的值 实际上是添加进map中的键值对 HashMap 有去重功能 说的是...
  • 面试官:HashTable,HashMapTreeMap介绍下。 你:它们都实现了map接口,都是以key-value形式存储的。 HashTable线程安全且不能存null key null value HashMap非线程安全,并且可以存放null key null value ...
  • HashMap,LinkedHashMap,TreeMap区别 比对项目 HashMap LinkedHashMap TreeMap 存储结构 数组单链表 数组双链表 红黑树 是否有序 无 插入或者访问顺序 实现...
  • TreeMap 的是基于红黑树结构来实现,它是由键来排序的。 LinkedHashMap 中保留插入顺序。 Hashtable 是Synchronize也就是说是线程安全的。当然效率没HashMap好,且不能用null做为键,其他基本一样。
  • 通常场景是放入,访问或者删除,而对顺序没有特别要求,hashmap在这种情况下基本是最好的选择,HashMap的性能表现非常依赖于哈希码的有效性,请务必掌握hashCode和equals的一些基本约定 比如:equals相等,hashcode一定要...
  • HashMap<String,HashMap<String,String>> 结构 身份证号 -> 人的基本信息 HashMap<String,ArrayList<String>> 结构 人 -> 朋友列表 ArrayList<HashMap<String,String>&...
  • 首先简单说一下他们之间的区别:   HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值...
  • java容器:5、如何决定使用HashMap还是TreeMapHashMapTreeMap区别

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,189
精华内容 26,075
关键字:

hashmaptreemap区别