




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
对java集合类的一些总结 第一篇:对java集合类的一些总结13、java中的集合类答:所有的集合类都实现了iterator接口,用于遍历集合中的元素,iterator接口中的方法有hashNext(),next(),remove()三种方法,不同的集合类提供了不同的实现(无序集合实现这个接口,只能向后遍历)。如果要实现向前遍历,也就是说集合中的元素是有序的,实现的是linkedIterator接口,这是iterator的子接口,实现了这个接口的类能实现双向(前后)遍历。Hashset:hashset继承了抽象类AbstractSet,而AbstractSet类又实现了set接口,并且AbstactSet又继承了AbstractCollection,AbstractCollection实现了Collection接口,因此hashset实际上实现了collection接口,又实现了set接口,因为所有的集合接口都实现了iterator接口,因此hashset可以上转型为set,collection,以及iterator,并且调用响应的方法。特点:hashset不能存放重复的元素,并且采用散列的存储方法,因此元素的插入与输出并不是一致的。附:散列是使用了数组和链表来进行存储的一种结构,数组是连续的,每个数组的元素都是一条链表。ArrayList:ArrayList继承了AbstractList并且实现了List接口。其中AbstractList继承了AbstractCollection并且实现了List接口,AbstractCollection实现了Collection接口,因此AbstractList可以说是间接或者是直接实现了List,Collection,iterator接口。ArrayList使用的数据结构是数组。方便对元素的检索,但是增删需要移动数组元素,因此不适合增删,增删使用链式存储的线性表(如:LinkedList)会比较方便,详细见LinkedList。LinkedList:linkedList继承了AbstractSequentialList并且实现了List接口,AbstractSequentialList继承了AbstractList,Abstractlist继承了AbstractCollection接口,因此LinkedList也是有序集合。LinkedList在java中的实现是双向链表,因此LinkedList对空间的利用率比较高,但是对元素的检索较慢,但是增删较快,只需要简单调整链的指向即可。Vector:Vector的结构和ArrayList几乎相同,不同的地方就是在公有方法层次上,Vector加了关键字synchronized,因此理论上来说,Vector每个方法都是现成安全的。但是个人认为(包括查资料了解到)这并不能完全保证并发访问下的线程安全。在并发访问情况下,任何时候都只能有一个线程去访问其中的共有方法,在方法级别是线程安全的。但是现在有两个线程A、B,线程A向Vector添加一个对象,此时线程B查询Vector的长度是1,但是线程B并没有进行任何操作(插入操作),这样仍然会造成并发问题,但是在线程A、B都进行插入操作的时候,jvm会根据自动进行线程调度从而确保在任何时刻只有一个线程操作Vector的插入操作。因此在Vector之后,新版的jdk里面有了arraylist(非线程安全),其实我认为就是把并发控制的问题交给程序员处理。Stack:Stack是栈结构,后进先出。Stack继承Vector,并且新增了一些方法,例如出栈,入栈操作。Stack内部的方法也是加了synchronized关键字的,因此,也是“线程安全”的。HashMap:HashMap继承了AbstractMap并且实现了Map接口,而AbstractMap也实现了Map接口,总的来说hashMap实现了Map接口以及abstractMap的一些方法。hashMap是通过键值对来存储以及检索数据的。HashMap是通过一个数组以及链表组合来存储数据的。java中的hashMap的实现是一个长度为16的数组,并且每个数组存储都是一个单链表,存储一个数据的时候,根据key的hash值去判断到底应该存在下标为多少的数组中,找到对应的数组位置后,并且一直对这个位置的链向后索引,查到链的最后面。hashMap综合了线性表以及链表的优点,使检索以及增删都变得方便。附:非线程安全,并且hashMap可以存储null值HashTable:HashTable也是一个散列表(和hashMap一样),存储的是键值对,HashTable继承于Dictionary,实现了Map接口,和hashMap最大的区别是:hashTable的读写方法

猫巷****松臣
实名认证
内容提供者


最近下载
一种基于双轨缆道的牵引式雷达波在线测流系统.pdf
一种基于双轨缆道的牵引式雷达波在线测流系统.pdf
一种胃肠道超声检查助显剂及其制备方法.pdf
201651206021+莫武林+浅析在互联网时代下酒店的营销策略——以湛江民大喜来登酒店为例.doc
201651206021+莫武林+浅析在互联网时代下酒店的营销策略——以湛江民大喜来登酒店为例.doc
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf