Java中HashMap和LinkedHashMap以及TreeMap的区别

作者&投稿:但侄 (若有异议请与网页底部的电邮联系)
LinkedHashMap和TreeMap的区别?~

首先2个都是map,所以用key取值肯定是没区别的,区别在于用Iterator遍历的时候
LinkedHashMap保存了记录的插入顺序,先插入的先遍历到
TreeMap默认是按升序排,也可以指定排序的比较器。遍历的时候按升序遍历。
例如:a是LinkedHashMap,b是TreeMap。
a.put("2","ab");
a.put("1","bc");
b.put("2","ab");
b.put("1","bc");

那么遍历a的时候,先遍历到key是2的,因为2先放进去。
遍历b的时候,先遍历到“1”,因为按顺序是先1后2

Java中HashMap和TreeMap的区别
什么是Map集合在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对。
HashMap 非线程安全 TreeMap 非线程安全
1、多个thread对同一个java实例的访问(read和modify)不会相互干扰,它主要体现在关键字synchronized.如ArrayList和Vector,HashMap和Hashtable
(后者每个方法前都有synchronized关键字)。如果你在interator一个List对象时,其它线程remove一个element,问题就出现了。
2、每个线程都有自己的字段,而不会在多个线程之间共享。它主要体现在java.lang.ThreadLocal类,而没有Java关键字支持,如像static、transient那样。
1.AbstractMap抽象类和SortedMap接口
AbstractMap抽象类:(HashMap继承AbstractMap)覆盖了equals()和hashCode()方法以确保两个相 等映射返回相同的哈希码。如果两个映射大小相等、包含同样的键且每个键在这两个映射中对应的值都相同,则这两个映射相等。映射的哈希码是映射元素哈希码的 总和,其中每个元素是Map.Entry接口的一个实现。因此,不论映射内部顺序如何,两个相等映射会报告相同的哈希码。
SortedMap接口:(TreeMap继承自SortedMap)它用来保持键的有序顺序。SortedMap接口为映像的视图(子集), 包括两个端点提供了访问方法。除了排序是作用于映射的键以外,处理SortedMap和处理SortedSet一样。添加到SortedMap实现类的元 素必须实现Comparable接口,否则您必须给它的构造函数提供一个Comparator接口的实现。TreeMap类是它的唯一一份实现。

共同点:
HashMap,LinkedHashMap,TreeMap都属于Map;Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。
不同点:
1.HashMap里面存入的键值对在取出的时候是随机的,也是我们最常用的一个Map.它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。
2.TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
3. LinkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现. (应用场景:购物车等需要顺序的)

Java中HashMap和TreeMap的区别
什么是Map集合在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对。
HashMap 非线程安全 TreeMap 非线程安全
1、多个thread对同一个java实例的访问(read和modify)不会相互干扰,它主要体现在关键字synchronized.如ArrayList和Vector,HashMap和Hashtable
(后者每个方法前都有synchronized关键字)。如果你在interator一个List对象时,其它线程remove一个element,问题就出现了。
2、每个线程都有自己的字段,而不会在多个线程之间共享。它主要体现在java.lang.ThreadLocal类,而没有Java关键字支持,如像static、transient那样。
1.AbstractMap抽象类和SortedMap接口
AbstractMap抽象类:(HashMap继承AbstractMap)覆盖了equals()和hashCode()方法以确保两个相 等映射返回相同的哈希码。如果两个映射大小相等、包含同样的键且每个键在这两个映射中对应的值都相同,则这两个映射相等。映射的哈希码是映射元素哈希码的 总和,其中每个元素是Map.Entry接口的一个实现。因此,不论映射内部顺序如何,两个相等映射会报告相同的哈希码。
SortedMap接口:(TreeMap继承自SortedMap)它用来保持键的有序顺序。SortedMap接口为映像的视图(子集), 包括两个端点提供了访问方法。除了排序是作用于映射的键以外,处理SortedMap和处理SortedSet一样。添加到SortedMap实现类的元 素必须实现Comparable接口,否则您必须给它的构造函数提供一个Comparator接口的实现。TreeMap类是它的唯一一份实现。


弋阳县18964708102: hashmap和linkhashmap有什么区别? -
绪浦妥泰: 您好,提问者: HashMap底层是hashCode算法结构. LinkedHashMap底层是链表结构. 如果要不确定位置赠、删的话LinkedHashMap比较快. 如果确定位置增加、查询的话那么HashMap比较快. LinkedHashMap可以实现快速的查询第一个元素(First)跟结尾(Last)

弋阳县18964708102: 在Java.util包中的LinkedList类、ArrayList类、HashMap类、Vector类的区别和它们都什么时候用?? -
绪浦妥泰: 1、在数据结构上不同.LinkedList为链表,ArrayList为数组列表,Vector为向量,HashMap为通过Hash值索引的图.在具体实现上有不同.2、从数据接口上看,LinkedList,ArrayList,Vector都实现了List接口,所以功能上基本相同,都可通过index数值定位数据.HashMap实现的是Map接口,通过指定的键的Hash值来定位数据,数据较多时,速度比较快.

弋阳县18964708102: java中hashset和hashmap 有什么特点. -
绪浦妥泰: HashSet:HashSet实现了Set接口,它不允许集合中有重复的值.当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储...

弋阳县18964708102: arraylist和linklist的区别 -
绪浦妥泰: ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦 LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要...

弋阳县18964708102: 简叙java的集合框架,常见集合的特点有哪些 -
绪浦妥泰: 集合主要有Collection和Map接口. List特点:元素有放入顺序,元素可重复 Map特点:元素按键值对存储,无放入顺序 Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决...

弋阳县18964708102: ArrayList和LinkedList的区别
绪浦妥泰: 一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针. 3.对于新增和删除操作add...

弋阳县18964708102: JAVA什么时候用ReslutSet、数组、list、linklist、map、hashmap、linkedhasmap,经常看见相互之间转换,请 -
绪浦妥泰: 其实你说的以上几种类型都是看实际需求来使用的,没有什么刻意使用.简单说说我的经验吧. 如果查询数据库,返回的结果集是同一类型的,我一般使用List.List里的Object就是唯一的返回类型,这样取值时不用再做类型转换了. 如果你有一个方法,返回值需要返回N个变量并且类型不一致,这时建议使用Map 例如 Map m = new Hashmap(); 因为map是使用键值对存储,所以不同类型的变量都可以同时存入. 数组的话,我一般只在简单的处理中使用,例如分割字符串等. 总之还是看程序需求吧.

弋阳县18964708102: java中main函数中初始化一个hashmap对象 -
绪浦妥泰: 接口类: package src;public interface MyInterface {void printvalues(); }HashMap打印类: package src;import java.util.HashMap; import java.util.Map.Entry;public class PrintHashMapValue implements MyInterface { HashMaphashMap = null; ...

弋阳县18964708102: 在java的Map集合中如何使用HashMap类?
绪浦妥泰: Map map=new HashMap();//实例化map对象 map.put("key","value");//存放值(值以键(key)-值(value)方式存放.) System.out.print(map.get("key").toString());//取值 根据键就可以取到值

弋阳县18964708102: java容器问题 -
绪浦妥泰: 执行JAVA的应用程序容器(Container)容器可以管理对象的生命周期、对象与对象之间的依赖关系,您可以使用一个配置文件(通常是 XML),在上面定义好对象的名称、如何产生(Prototype 方式或Singleton 方式)、哪个对象产生之后...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网