List、Set、Map区别

三者关系如下:


结构特点

1.List和Set是存储单列数据集合,Map是存储键值对这样的双列数据集合;

2.List中存储的数据都是有序的,并且允许重复;Map中存储的数据是无序的,它的键是不允许重复的,值可以重复;Set存储的数据是无序的,并且不允许重复,元素在集合中的位置,是由元素的hashCode决定,位置是固定的。

 实现类

1.基于List接口实现的类。

     1.linkedList

        基于链表实现,链表内存是散列的,增删快,查询慢

    2.ArrayList

        基于数组实现的,非线程安全,效率高,查询快,增删慢

    3.Vector

        基于数组实现的,线程安全,效率低,增删慢,查询慢,用到很少

2.基于Set接口实现的类。

    1.HashSet

        基于HashMap实现,不允许集合中有重复的值,使用该方式时需要重写 equals()和 hash Code()方法;

    2.LinkedHashSet

        继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap。

3.基于Map接口实现的类。

    1.HashMap

        基于 hash 表的 Map 接口实现,非线程安全,高效;

    2.HashTable

        线程安全,效率低,不支持null键和值

    3.LinkedHashMap

        是 HashMap 的一个子类,保存了记录的插入顺序;

    4.SortMap接口

        TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序

 区别

 List

  • 允许重复对象

  • 可以插入多个null元素

  • 是一个有序容器

 Set

  • 不允许重复对象

  • 无序容器,无法保证每个元素的存储顺序,TreeSet通过Comparator或者Comparable维护了一个排序的顺序

  • 只允许一个null元素

 Map

  • Map不是Collection的子接口或者实现类,Map是一个接口。

  • Map的键对象必须唯一,只允许存在一个null键。

  • TreeMap通过Comparator或者Comparable维护了一个排序的顺序。

最新文章

  1. iis虚拟目录实现分布式文件服务器
  2. localStorage与sessionStorage 的区别
  3. getElementById getElementsByName 赋值
  4. East Central North America Region 2015
  5. SQL查询数据库表字段值不为空或Null的所有列
  6. php安装扩展模块(curl模块)
  7. 06-IOSCore - KVC、CoreData
  8. 【转】delphi Format格式化函数
  9. tomcat服务器搭建之ngrok——将内网地址映射到外网
  10. Nginx下配置虚拟主机的三种方法
  11. linux环境给mongodb创建索引
  12. 33 ArcToolBox学习系列之数据管理工具箱——投影与变换(Projections and Transformations)未完待续……
  13. jQuery基本的属性操作
  14. 51nod-1459-迷宫游戏
  15. Java编程的逻辑 (77) - 异步任务执行服务
  16. js下数据库 nedb lokijs
  17. FMS Dev Guide学习笔记(SharedBall)
  18. 调用百度、高德地图App,百度地图网页版,App定位
  19. 第一章 HttpClient的使用
  20. 尴尬,qt出现错误,然后莫名又好了..

热门文章

  1. jQuery中$()的四种种使用方式
  2. Hadoop伪分布式重启正确流程
  3. scrapy常用设置和注意点!!!!
  4. redis弱密码漏洞利用
  5. Dubbo 04 服务化最佳实现流程
  6. Restricting Input in HTML Textboxes to Numeric Values
  7. JS 转Boolean的两张方法
  8. windows笔记本命令行方式建立wifi热点
  9. java邮箱正则验证
  10. 创建本地repo源