精华内容
下载资源
问答
  • TreeMap TreeSet 是 Java Collection Framework 两个重要成员,其中 TreeMap 是 Map 接口常用实现类,而 TreeSet 是 Set 接口常用实现类。虽然TreeMap和TreeSet实现接口规范不同,但 TreeSet 底层是通过 ...

    TreeMap 和 TreeSet 是 Java Collection Framework 的两个重要成员,其中 TreeMap 是 Map 接口的常用实现类,而 TreeSet 是 Set 接口的常用实现类。虽然 TreeMap 和TreeSet 实现的接口规范不同,但 TreeSet 底层是通过 TreeMap 来实现的(如同HashSet底层是是通过HashMap来实现的一样),因此二者的实现方式完全一样。而 TreeMap 的实现就是红黑树算法

    TreeSet和TreeMap的关系

      与HashSet完全类似,TreeSet里面绝大部分方法都市直接调用TreeMap方法来实现的。

    相同点:

    • TreeMap和TreeSet都是非同步集合,因此他们不能在多线程之间共享,不过可以使用方法Collections.synchroinzedMap()来实现同步
    • 运行速度都要比Hash集合慢,他们内部对元素的操作时间复杂度为O(logN),而HashMap/HashSet则为O(1)。
    • TreeMap和TreeSet都是有序的集合,也就是说他们存储的值都是拍好序的。

    不同点:

    • 最主要的区别就是TreeSet和TreeMap分别实现Set和Map接口
    • TreeSet只存储一个对象,而TreeMap存储两个对象Key和Value(仅仅key对象有序)
    • TreeSet中不能有重复对象,而TreeMap中可以存在
    • TreeMap的底层采用红黑树的实现,完成数据有序的插入,排序。

    红黑树的特点:

    • 性质 1:每个节点要么是红色,要么是黑色。
    • 性质 2:根节点永远是黑色的。
    • 性质 3:所有的叶节点都是空节点(即 null),并且是黑色的。
    • 性质 4:每个红色节点的两个子节点都是黑色。(从每个叶子到根的路径上不会有两个连续的红色节点)
    • 性质 5:从任一节点到其子树中每个叶子节点的路径都包含相同数量的黑色节点。
    展开全文
  • TreeSet和TreeMap区别

    2021-04-12 10:19:32
    最主要的区别就是TreeSet和TreeMap分别实现Set和Map接口 TreeSet只存储一个对象,而TreeMap存储两个对象Key和Value(仅仅key对象有序) TreeSet中不能有重复对象,而TreeMap中可以存在 TreeMap的底层采用红黑树的...

    最主要的区别就是TreeSet和TreeMap分别实现Set和Map接口
    TreeSet只存储一个对象,而TreeMap存储两个对象Key和Value(仅仅key对象有序)
    TreeSet中不能有重复对象,而TreeMap中可以存在
    TreeMap的底层采用红黑树的实现,完成数据有序的插入,排序

    展开全文
  • 主要区别: List 存放是有顺序 Set是没有顺序 List是允许重复存入 Set 不允许重复元素 ArrayList 底层是使用数组实现 特点是查找速度很快(数组里面有下标值) 缺点是:插入移除很慢

    首先它们6个是分别属于三个类别的 也就是List   Set  Map

    List与Set都是单独存放对象的,Map是放一个名指对,就是可以通过key找到value

    主要区别:

    List 存放是有顺序的    Set是没有顺序的

    List是允许重复存入的  Set 不允许重复元素的

    ArrayList 底层是使用数组实现的 特点是查找速度很快(数组里面有下标值)

    缺点是:插入和移除很慢


    LinkedList底层是采用链表实现的,特点是插入很容易  缺点是查找速度很慢


    HashSet是使用哈希表实现的 TreeSet也是一样的 但是TreeSet可以自动排序

    另外说到HashSet就不得不说HashTable了 究竟有什么区别呢?

    1)HashTable是dictionary的子类 线程不安全的 是同步的 另外根据API上面的说明 HashTable 是不允许元素为空的

    2)HashSet底层是采用哈希表实现的 线程安全的 不同步的 允许元素为空


    HashMap是Map接口的一个实现类

    HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable。可能你觉得HashTable很好用,为什么不用呢?这里简单分析他们的区别。 
    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,代码是这样的:
    int hash = key.hashCode();
    int index = (hash & 0x7FFFFFFF) % tab.length;
    而HashMap重新计算hash值,而且用与代替求模:
    int hash = hash(k);
    int i = indexFor(hash, table.length);

    static int hash(Object x) {
      int h = x.hashCode();

      h += ~(h << 9);
      h ^= (h >>> 14);
      h += (h << 4);
      h ^= (h >>> 10);
      return h;
    }
    static int indexFor(int h, int length) {
      return h & (length-1);
    }
    以上只是一些比较突出的区别,当然他们的实现上还是有很多不同的,比如
    HashMap对null的操作。
     
    HashMap可以看作三个视图:key的Set,value的Collection,Entry的Set。 这里HashSet就是其实就是HashMap的一个视图。HashSet内部就是使用Hashmap实现的,和Hashmap不同的是它不需要Key和Value两个值。
             
    往hashset中插入对象其实只不过是内部做了

    public boolean add(Object o) {

        return map.put(o, PRESENT)==null;
    }


    HashMap为散列映射,它是基于hash table的一个实现,它可在常量时间内安插元素,或找出一组key-value pair.HashSet为散列集,它把查找时间看的很重要,其中所有元素必须要有hashCode()



    展开全文
  • TreeSet和TreeMap的区别与联系:TreeSet里面的绝大部分方法都是直接调用TreeMap方法来实现的。相同点:1. TreeMap和TreeSet都是有序的集合,也就是说它们存储的值都是排好序的;2. TreeMap和TreeSet都是非同步集合...
  • 文章目录Java基础1-String/List/TreeSet/TreeMapStringbufferStringbuilder的区别?ArrayListLinkedList以及vector区别?有关于TreeSet有关于TreeMap有关于红黑树 StringbufferStringbuilder的区别? ...
  • Map 集合中保存 Key-value 对形式元素,访问时只能...Map 中每一个元素包含 “一个 key” “key 对应 value”。AbstractMap 是个抽象类,它实现了 Map 接口中大部分 API。而 HashMap,TreeMap,都是继承于
  • 对于集合使用还不是很熟练,所以上网查下有关用法和区别。 一、概述  数据结构对程序设计有着深远影响,在面向过程C语言中,数据库结构用struct来描述,而在面向对象编程中,数据结构是用类来描述,...
  • TreeMap TreeSet 是 Java Collection Framework 两个重要成员,其中 TreeMap 是 Map 接口常用实现类,而 TreeSet 是 Set 接口常用实现类。虽然TreeMap和TreeSet实现接口规范不同,但 TreeSet 底层是通过 ...
  • Java辨别 TreeMap和TreeSet的区别与联系

    千次阅读 2017-02-14 11:09:21
    TreeMap和TreeSet的区别与联系
  • TreeMap和TreeSet的区别与相同点

    千次阅读 2019-03-21 13:55:20
    相同点: 1、都是有序集合 2、TreeMap是TreeSet的底层结构 3、运行速度都比hash慢 ...3、TreeMap的底层采用红黑树的实现,完成数据有序的插入,排序。 PS:红黑树的特点: 1:每个节点要么是红色/黑色。...
  • ArrayList与LinkedList的区别和适用场景 Arraylist: 优点:ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)。 缺点:因为地址连续,...
  • 1、SetMap的关系: Set代表一种集合元素无序、不可重复的集合,Map代表一种由多个key-value对组成的集合。 Set的集合继承体系: Map关系集合 ...Map集合的key特征:所有...2、HashSetHashMap的区别和联系: ...
  • TreeMap和TreeSet

    2016-08-11 13:58:08
    TreeMap和TreeSet的区别与联系TreeMap和TreeSet的区别与联系 http://blog.sina.com.cn/s/blog_4b1a0ba30102vo2p.htmljava中treemap和treeset实现 ...
  • TreeMap底层数据结构:TreeMap底层数据结构是红黑树; 红黑树特性: 每个节点都只能是红色或者黑色; 根节点是黑色; 每个叶节点(NLL节点,空节点)是黑色;... TreeMap是非线程安全 :但是可以用如下如下方...
  • HashSet与TreeSet的实现原理,简要讲述底层实现原理。
  • HashSet和TreeSet的区别

    2016-12-29 15:09:06
    HashSet和TreeSet的区别这个不能发表成博客,这是https://zhidao.baidu.com/question/85559012.html别人写的. HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key Map的keySet都有...
  • TreeSet 代码里实际默认是利用 TreeMap 实现,Java 类库创建了一个 Dummy 对象“PRESENT”作为 value,然后所有插入元素其实是以键形式放入了 TreeMap 里面;同理,HashSet 其实也是以 HashMap 为基础实现,...
  • TreeSet与HashSet的区别

    2019-10-24 09:35:27
    如果操作元素是对象须重写equalshashcode两方法来保证不重复去存,并且最多包含一个null元素。 TreeSet实现Set接口(内部是TreeMap)。有序不重复,如果TreeSet中元素是对象则必须要实现Comparable接口,否则会抛...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 258
精华内容 103
关键字:

treeset和treemap的区别