HashSet、HashMap、ArrayList、LinkedList、Vector
来源:互联网 发布:网络宣传部是干什么的 编辑:程序博客网 时间:2024/04/20 01:51
前些时候买了一本《Java程序员的基本修养》这本书,李刚编著的,感觉还不错,对已经学会Java想进一步提高的同学来说,这本书可以当做进阶之书。(这不是广告植入。。。如果刚哥看到这个愿意给点广告费的话,我很乐意!)
进入正题,HashSet、HashMap、ArrayList、LinkedList、Vector这几个在Java编程中经常用到,他们之间有很多联系,有很多相通的地方、但也有很多不同。首先java集合类主要由两个接口:Collection和Map.Collection又有子接口:Set、Queue、List.(这些基础的接口关系这里不多说了)
HashSet与HashMap,名字很接近,都带有Hash,也就是说他们都依赖Hash算法来存储。我们知道每个对象都有自己的Hash值,这个hash值可以由编程员来编写函数来计算得出,但是要与equal函数相协调(这里涉及到设计类时遵循的原则问题,有兴趣的可以查阅相关资料,hash函数的编写规则)。
那么HashSet与HashMap之间有什么联系呢?HashSet底层使用HashMap来存储的!大家可以看一下jdk的源码,会发现HashSet类源码中有一个HashMap类型的成员变量,其中的成员方法也是调用hashMap的成员方法,只不过存储时,按照key-value对存入HashMap对象中,把值存在key中,Value统一为null。
那么ArrayList与LinkedList有什么联系和区别呢?联系就是他们都实现List接口,因此有许多用法是一样的;区别就要从底层分析了,ArrayList底层使用数组存储,LinkedList底层使用双向链表存储。学过数据结构的都知道,数组与链表作为线性表各有优劣,所以ArrayList和LinkedList在效率和使用场景上也有区别。ArrayList在访问数据时效率较高,在插入和删除数据时效率较低。总体上来看ArrayList的效率要略高于LinkedList,因此大多数场景选择Arraylist,除非很多时候要进行插入和删除数据,这时再选择LinkedList。
ArrayList与vector呢?可以说这两个相似度90%,只有一点区别,就是vector是一种线程安全类,它的方法都带有Synchronized关键字。但是vector类很古老,很多方法名都比较长且比较难懂,因此基本不用vector类,但是当遇到多线程情况怎么办呢?不用怕,java提供了Collections工具类,能够将ArrayList转换成线程安全的类!
- HashSet、HashMap、ArrayList、LinkedList、Vector
- HashSet、HashMap、ArrayList、LinkedList、Vector区别
- HashMap,HashSet,HashTable,LinkedHashMap,LinkedHashSet,ArrayList,LinkedList,ConcurrentHashMap,Vector
- ArrayList、LinkedList、HashSet以及HashMap
- Array / ArrayList / Vector / LinkedList / Hashmap
- LinkedList,ArrayList,Vector,HashTable,HashMap
- LinkedList,ArrayList,Vector,HashTable,HashMap
- ArrayList & Vector & LinkedList & HashMap & HashTable
- 各种集合小结:arrayList和linkedList,Vector;hashmap和hashtable,hashset,
- Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
- Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
- Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
- Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
- java中Collection/Collections;List/Set/Map;ArrayList/Vector/LinkedList;HashSet/HashMap/TreeSet/TreeMap
- ArrayList、LinkedList、Vector、HashSet、Treeset、HashMap、TreeMap的区别和适用场景
- 浅析Java中的集合包(ArrayList,LinkedList,Vector, Stack,HashSet,TreeSet,HashMap,TreeMap)
- ArrayList、LinkedList、Vector、HashSet、Treeset、HashMap、TreeMap的区别和适用场景
- TreeSet、TreeMap、HashSet、HashMap、HashTable、ArrayList、LinkedList、Vector集合的全部比较
- jmap命令(Java Memory Map)
- 框架中新增级联查询
- Java VisualVM(Java Virtual Machine Monitoring, Troubleshooting, and Profiling Tool)
- ubuntu vsftpd安装
- 关于canvas画统计图与统计图的水平或坚直滑动
- HashSet、HashMap、ArrayList、LinkedList、Vector
- java学习笔记07
- 数据库--数据库链接池--DBCP--Spring 连接池之 DBCP
- 新手入门--输出格式八
- SMAQ:海量数据的存储计算和查询模型(译)
- (一)Makefile研究 —— 必备语法
- 调用ejb出现java.lang.ClassCastException异常
- 静态检查-----pclint使用
- linux shell:linux用户和用户组