List map set
-
List和Set是存储单列数据的集合,Map是储存key-value双列数据的集合
-
List 有序,允许重复
-
Map 无序,key不可重复 ,value允许重复
-
Set 无序,不允许重复,位置由hashcode决定,固定,用户不可控
Set 根据 equals()和 hashcode()判断 一个对象存储在set中必须重写 equals 和 hashcode
List 的三个实现类
类 | 底层 | 线程 | 特点 |
ArrayList | 数组 | 不安全 | 查询块 增删慢,效率高 |
LikedList | 链表 | 不安全 | 查询慢 增删快 |
voctor | 数组 | 安全 | 查询慢增删慢效率低 |
Map的三个实现类
类 | 底层 | 线程 | 特点 |
HashMap | 基于hash表的map接口实现 | 不安全 | 高效,支持null值和null键 |
HashTable | 安全 | 低效,不支持null值和null键 | |
LinkedHashMap | HashMap的一个子类 | 不安全 | 保存了记录的插入顺序 |
SortMap 接口TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序
Set接口的两个实现类
类 | 底层 | 特点 |
HashSet | HashMap实现 | 不允许集合中有重复值, |
LikedHashMap | LikedHashMap实现 | 继承HashSet,又基于LikedHashMap实现 |
区别
HashMap 和HashTable的区别
-
HashMap 线程不安全 HashMap是一个接口 是Map的子接口 将键映射到值 key不允许重复 允许null key 和 null value 效率较HashTable高一些
-
HashTable 线程安全 不允许 null key 或 null value 是sychronize 同步的, 多线程访问时不需要为它的方法实现同步,HashMap 被多线程访问时需要为它的方法实现同步
-
List 集合中对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象 e.g:list.get(i) 获取元素
-
Map 每一个元素包含一个key和一个value,成对出现 key不可重复,value可重复
-
Set 集合中的对象不按特定方式排列,没有重复值,实现类能对集合中的对象按照特定的方式排序 e.g :TtreeSet 可以按照默认顺序,也可实现Java.util.Comparator<Type>接口自定义排序