List、Set、Map的比较
来源:互联网 发布:淘宝货到付款付款方式 编辑:程序博客网 时间:2024/06/06 10:44
一、继承关系
list和set继承Collection.接口。Map没有继承Collection接口。
体系图:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java JDK不能提供直接继承自Collection的类,Java JDK提供的类都是继承自Collection的"子接口",如:List和Set。
List详解:
list是有序的,可以存储重复元素的。list通过下标来存取值。
List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢
ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低
ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低
Set详解:
setz是无序的,不能存储重复元素的。
Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet
SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现)
--HashSet 为快速查找而设计的Set ,存入HashSet对象必须定义hashCode().
--TreeSet 保护次序的Set ,使用它可以从Set 中提取有序序列.
--LinkedHashSet 具有HashSet的查询速度,且内部使用链表维护元素的次序.
--TreeSet 保护次序的Set ,使用它可以从Set 中提取有序序列.
--LinkedHashSet 具有HashSet的查询速度,且内部使用链表维护元素的次序.
它们之间的存储方式不一样:
TreeSet采用红黑树的树据结构排序元素.
HashSet采用散列函数,这是专门为快速查询而设计的.
LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序.
TreeSet采用红黑树的树据结构排序元素.
HashSet采用散列函数,这是专门为快速查询而设计的.
LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序.
Map详解:
Map接口有三个实现类:HashMap,HashTable,LinkeHashMap 。
HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null
SortedMap有一个实现类:TreeMap
HashMap和Hashtable的区别:
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
0 0
- List、Set、Map的比较
- List Map Set的比较
- list set map比较
- Map list set 比较
- 各种List、Map、Set的比较
- List Vecter Map Set 比较
- 比较Vector,List,Set和Map间的区别
- JAVA基础-Collection中List,Set,Map的比较总结
- Java中array、Set、List和Map的比较总结
- Set,List, Map各自实现类的比较
- 比较器练习(list,set,map...)
- java中Map、List与Set比较
- Java List Map Set 常用结构比较
- List,Map,Set的区别
- List、Map、Set的区别
- List,Map,Set的区别
- List Map Set的区别
- set map list的区别
- Leetcode 215. Kth Largest Element in an Array (Medium) (cpp)
- Python中join函数和os.path.join用法
- C语言中结构体指针的定义和引用
- Unity游戏选/创建角色界面中 职业能力图六角形
- 无界面浏览器phantomJS
- List、Set、Map的比较
- POJ-2418 Hardwood Species(Trie树)(map)
- Hibernate配置Myeclipse与SQL Server 2008链接
- UITextField设置placeholder颜色
- 布局填充器的几种写法
- Async Task 用法介绍
- haproxy配置详解
- 20160727------JAVA基础语法【运算符、键盘输入】
- 价格录入input