Java中的集合框架大总结
副问题[/!--empirenews.page--]
直接上图: 从上面的荟萃框架图可以看到:Java荟萃框架首要包罗两种范例的容器,一种是荟萃(Collection),存储一个元素荟萃;另一种是图(Map),存储键/值对映射。Collection接口又有两个子接口,List和Set,再下面是一些抽象类,最后是详细实现类,常用的有ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap等等。 荟萃框架是一个用来代表和哄骗荟萃的同一框架。全部的荟萃框架都包括如下内容: 接口:是代表荟萃的抽象数据范例。譬喻:Collection、List、Set、Map等。之以是界说多个接口,是为了以差异的方法操纵荟萃工具。 实现(类):是荟萃接口的详细实现。从本质上讲,它们是可一再行使的数据布局,譬喻:ArrayList、LinkedList、HashSet、HashMap。 除了荟萃,该框架也界说了几个Map接口和类。Map里存储的是键/值对。尽量Map不是荟萃,可是它们完全整合在荟萃中。Java荟萃框架提供了一套机能精良,行使利便的接口和类,Java荟萃框架位于java.util包中,以是当行使荟萃框架的时辰必要举办导包。 一、荟萃接口: 1.Collection Collection是最根基的荟萃接口,一个Collection代表一组Object,即Collection的元素,Java不提供直接担任自Collection的类,只提供担任于Collection的子接口(如List和Set),Collection接口存储一组不独一,没有次序的工具。 2.List List接口是一个有次序的Collection,行使此接口可以或许准确地节制每个元素插入的位置,可以或许通过索引(元素在List中的位置,相同于数组的下标)来会见List 中的元素,第一个元素的索引为0,并且应承有沟通的元素。List接口存储一组不独一,有序(插入次序)的工具。 3.Set Set具有与List完全一样的接口,只是举动上差异,Set不生涯一再的元素。Set接口存储一组独一,无序的工具。 4.Map Map接口存储一组键值对工具,提供key(键)到value(值)的映射。 5.Map.Entry Map.Entry描写在一个Map中的一个元素(键/值对),是一个Map的内部接口。 二、Set和List的区别: 1.Set接话柄例存储的是无序的,不一再的数据。List接话柄例存储的是有序的,可以一再的元素。 2.Set检索服从低下,删除和插入服从高,插入和删除不会引起元素位置的改变,实现类有HashSet,TreeSet。 3.List和数组相同,可以动态增添,按照现实存储的数据的长度自动增添List的长度。查找元素服从高,插入删除服从低,由于会引起其他元素位置改变,实现类有ArrayList,LinkedList,Vector。 三、荟萃实现类 1.AbstractCollection:实现了大部门的荟萃接口。 2.AbstractList:担任于AbstractCollection而且实现了大部门List接口。 3.LinkedList:该类实现了List接口,应承有null元素。首要用于建设链表数据布局,LinkedList查找服从低。 4.ArrayList:该类也是实现了List的接口,实现了可变巨细的数组,随机遇见和遍历元素时,提供更好地机能。 5.AbstractSet:担任于AbstractCollection而且实现了大部门Set接口。 6.HashSet:该类实现了Set接口,不应承呈现一再元素,不担保荟萃中元素的次序,应承包括值为null的元素,但最多只能有一个。 7.LinkedHashSet:具有可预知迭代次序的Set接口的哈希表和链表列表实现。 8.TreeSet:该类实现了Set接口,可以实现排序等成果。 9.AbstractMap:实现了大部门的Map接口。 10.HashMap:HashMap是一个散列表,它存储的内容是键值对(key-value)映射。该类实现了Map接口,按照键的HashCode值存储数据,具有很快的会见速率,最多应承一笔记录的键为null,不支持线程同步。 11.TreeMap:担任了AbstractMap,而且行使一棵树。 12.LinkedHashMap:担任于HashMap,行使元素的天然次序对元素举办排序。 13.Vector:该类和ArrayList很是相似,可是该类是同步的,可以用在多线程的环境,该类应承配置默认的增添长度,默认扩容方法为原本的2倍。 14.HashTable:HashTable是Dictionary(字典)类的子类,位于java.util包中。 四、迭代器的行使(遍历荟萃) 1、遍历ArrayList /** * 回收差异的要领遍历ArrayList荟萃 * 个中回收迭代器的要领可以不消担忧在遍历的进程中会超出荟萃的长度 * */public class TestArrayList { public static void main(String[] args) { List 2、遍历HashSet
(编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |