- 3
- 0
- 约6.52千字
- 约 57页
- 2019-07-17 发布于辽宁
- 举报
Java的集合接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。 一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。 Java SDK不提供直接实现自Collection的类,Java SDK提供的类都是实现自Collection的“子接口”如List和Set。 Collection中元素的遍历 不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。 由Collection接口派生的两个接口是List和Set 典型的用法如下: Iterator it = collection.iterator(); // 获得一个迭代子 while(it.hasNext()) { Object obj = it.next(); // 得到下一个元素 } List接口 List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。 和下面要提到的Set不同,List允许有相同的元素。 除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。 实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。 Set接口 Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素 Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。 必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题 放入Set集合中的对象必须重写equals()方法 重写hashCode()方法,会提高性能 Map接口 Map没有继承Collection接口,Map提供key到value的映射 一个Map中不能包含相同的key,每个key只能映射一个value Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射 放入Map中的自定义类的对象,需要重写equals()和hashCode()方法 实现接口的类(表10-8) 实现List接口的类 实现Set接口的类 实现Map接口的类 实现List接口的类 ArrayList ArrayList:ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。 size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性 每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。 如果你希望随机访问有序集合中的任何一个元素,或者总是把元素追加在末尾,优先考虑使用 LinkedList类 LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。 注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List: List list = Collections.synchronizedList(new LinkedList(...)); 经常把元素插入到列表的中间,或者是顺序访问,优先考虑使用 Vector类 Vector非常类似ArrayList,但是Vector是同步的。 由Vector创建的Iterator,虽然和ArrayList创建的It
您可能关注的文档
- Java应用程序开发 (5).pptx
- Java应用程序开发 (6).pptx
- Java应用程序开发 (7).pptx
- Java应用程序开发 (8).pptx
- Java应用程序开发 (9).pptx
- Java应用程序开发 (10).pptx
- Java应用程序开发 (11).pptx
- Java应用程序开发 (12).pptx
- Java应用程序开发 (13).pptx
- Java应用程序开发 (14).pptx
- 2026年宠物经济行业消费需求升级与宠物旅游服务分析报告.docx
- 2025-2026学年初中英语六年级下册鲁教版(五四制)(2024)教学设计合集.docx
- 2026年新能源太阳能电池技术标准化进程报告.docx
- 2026年智能家居入侵检测系统架构.docx
- 2026年运动服饰品牌年轻化营销策略与用户增长报告.docx
- 2026年工业废水处理行业投资热点与市场趋势研究报告.docx
- 2026年航空航天复合材料轻量化应用案例研究.docx
- 2026年智能手机行业技术革新与区域市场份额趋势报告.docx
- 2026年噪声传感器行业市场分析与发展趋势研究报告.docx
- 2026年料酒行业消费者需求变化与产品迭代报告.docx
最近下载
- 武汉农村商业银行2010年度报告pdf.pdf VIP
- 委托拍卖标的明细标准表格.docx VIP
- 脑膜炎(细菌性)和脑膜炎球菌病的识别、诊断和管理PPT 课件.pptx VIP
- 化脓性脑膜炎诊疗指南.pptx VIP
- 光宝EVO6800变频器说明书.pdf VIP
- DB31_T 1108-2018 监护型救护车配置规范(完整).pdf VIP
- 2025WHO《脑膜炎诊断、治疗和护理指南》解读PPT课件.pptx VIP
- 2025WHO《脑膜炎诊断、治疗和护理指南》解读PPT课件.pptx VIP
- 2025WHO《脑膜炎诊断、治疗和护理指南》解读PPT课件.pptx VIP
- 2025年高考数学试卷(广东)及全详细解析_v2.0.docx VIP
原创力文档

文档评论(0)