zoukankan      html  css  js  c++  java
  • 集合类(数据结构图、集合图、集合之间的比较)


    数据结构

    集合类图



      


    .容器中装的都是对象,因为它要把对象放到堆上面,但是1.5后就可以自动包装
      map.put("one",new Integer(1))
      1.5后可以 map.put("one",1);

    List

    有序的、可重复的、按索引位置排序  (这点类似于数组)

    实现类

    ArrayList   数组实现

    1.      代表长度可变的数组

    2.      允许对元素进行快速的随机访问(根据索引进行访问)

    3.      向ArrayList中插入和删除元素的速度较慢,需要移动大量的元素

    LinkedList  双向链表实现

    1.      插入和删除元素的速度较快(不需要移动元素)

    2.      随机访问的速度相对较慢,随机访问的含义是根据索引定位特定位置的元素

    3.      提供addFirst(0 addLast() getFirst() get拉斯特() removeFirst()和removeLast()方法,使LinkedList可以作为堆栈,队列和双向队列使用

    Set

    无序的、不可重复的、

    实现类

    HashSet 哈希算法实现、底层是HashMap实现,用到了key的部分。

    1.      按照哈希算法存取集合中的对象,具有很好的存取和查找性能

    2.      当向集合中加入一个对象时,Hashset会调用对象的hashCode()方法获得哈希码,然后根据哈希码进一步计算对象在集合中的存放位置

    3.      在Java.lang.Object中定义了hashCode()和equals()方法,在最原始的Object中定义的equals()方法是按照内存地址比较对象是否相等,因此对于Object而言,如果equals方法的结果为true,则说明两个引用实际上引用相同的对象,这两个引用的哈希码必然也相同

    为保证HashSet能够正常工作,要求两个对象用equals()方法比较的结果为true时,他们的哈希码也相同

    如果用户定义的类覆盖了Object的equals方法而没有覆盖hashCode方法,会导致当equals方法结果为true时,对象的哈希码并不相同,这样会使hashSet无法正常工作,用户本意是作为同一个对象引用处理,但是由于没有覆盖hashCode()方法,导致哈希码不同,hashSet将作为不同对象处理。

    SortedSet

    排序的set

    实现类

    TreeSet,在HashSet的基础上维护了一个双向链表,

    1.      排序的依据对象实现实现了Comparable接口,或者是构造时传入Comparator比较器。像Integer,Double和String他们自己都实现了Compareble接口

    Map

    Key 唯一的,key不可重复的。Value可重复。

    实现类

    HashMap

    SortedMap

    TreeSet基于TreeMap实现,支持排序

    TreeSet是非线程安全的

  • 相关阅读:
    STL————vector的用法
    DFS,DP————N皇后问题
    DP经典问题—————(LCIS)最长公共上升子序列
    DP————LIS(最长上升子序列)和LCS(最长公共子序列)问题
    CentOS7使用firewalld打开关闭防火墙与端口
    CentOS7下安装MySQL5.7安装与配置(YUM)
    nginx + tomcat +redis 负载均衡遇到问题集锦
    centos 7 安装 tomcat
    centos 7 设置防火墙 开放指定端口
    centos 7 通过yum 安装 nginx
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/7007398.html
Copyright © 2011-2022 走看看