Java容器类(类集)学习_第1页
Java容器类(类集)学习_第2页
Java容器类(类集)学习_第3页
Java容器类(类集)学习_第4页
Java容器类(类集)学习_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

---AHEADETPJAVATech-TeamJAVABASE13:容器类

内容容器APICollection接口、Iterator接口Set接口List接口和Comparable接口Collections类Map泛型2容器API容器类:JAVAAPI所提供的用于存放对象的一系列类的实现。容器API:容器API位于java.util包内容器API的类图如下:3容器APICollection接口--定义了存取一组对象的方法,而其子接口Set和List分别定义了存储的方式Set中的数据对象没有重复且没有顺序List中的数据对象可以重复且有顺序Map按口定义了存取(Key,value)对的方法Map并非继承自Collection接口4Collection接口Collection接口中定义的方法

booleanadd(E

e)voidclear()booleanequals(Object

o)

Iterator<E>iterator()booleanretainAll(Collection<?>

c)intsize()Object[]toArray()

5Collection方法容器类对象在调用remove、contains等方法时需要比较对象是否相等,这会涉及到对象类型是否相等,这会涉及到对象类型的equals方法和hashCode方法;对于自定义的类型需要重写equals和hashCode方法以实现自定义的对象相等规则。注:相等的对象必须有相等的hashCode。例Cat.java6Iterator接口7所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。Iterator接口定义了如下方法:booleanhasNext();//判断游标右边是否有元素Objectnext();//返回游标右边的元素并将游标移动到下一个位置Voidremove();//删除游标左面的元素,在执行完next之后该操作只能执行一次Iterator接口Iterator对象的remove方法是在迭代过程中删除元素的唯一安全方法。remove方法的两种异常UnsupportedOperationException–如果迭代器不支持remove操作。IllegalStateException–如果沿未调用next方法,或者在上一次调用next方法之后已经调用了remove方法。8Set接口Set接口是Collection的子接口,Set接口没有提供额外的方法,但实现Set接口的容器类中的元素是没有顺序的,而且不可以重复。Set容器可以与数学中“集合”的概念相对应。JAVAAPI所提供的Set容器类有HashSet,TreeSet等9List接口List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复。List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。JDK所提供的List容器类有ArrayList,LinkedList等。Objectget(intindex);Objectset(intindex,Objectelement);voidadd(intindex,Objectelement);Objectremove(intindex);intindexOf(Objecto);intlastIndexOf(Objecto);10ArrayListArrayList是一种很好的基本列表实现,它在一个数组中保存其元素,相当于大小可变数组。ArrayList有一个容量(capacity),是它不需要为更大数组分配内存的情况下所能容纳的元素数量。添加元素时它们被保存到数组中,但是当空间溢出时,必须分配一个新的数组来代替原数组。因此恰当地设置初始容量可以提高性能。11ArrayListArrayList的构造函数ArrayList()构造一个初始容量为10的空列表。ArrayList(Collection

c)构造一个包含指定collection的元素的列表,这些元素是按照该collection的迭代器返回它们的顺序排列的。ArrayList(int

initialCapacity)构造一个具有指定初始容量的空列表。12LinkedList13LinkedList是一个双向链表LinkedList的构造函数:LinkedList()

构造一个空列表。LinkedList(Collection

c)构造一个包含指定collection中的元素的列表,这些元素按其collection的迭代器返回的顺序排列。Collections类java.util.Collections提供了一些静态方法实现了基于List容器的一些常用算法。voidsort(List)对容器内的元素排序voidshuffle(List)对List容器内的对象进行随机排列voidreverse(List)对List容器内的对象进行逆序排列voidcopy(Listdest,Listsrc)将srclist容器内容拷贝到destlist容器intbinarySearch(List,Object)对于顺序的List容器,采用折半查找的方法查找一个对象例14Comparable接口容器中的对象排序是根据什么来确定先后顺序呢?所有可以“排序”的类都实现了java.lang.Comparable接口,Camparable接口中只有一个方法:publicintcompareTo(Objectobj)返回0表示this==obj返回正数表示this>obj返回负数表示this<obj实现了Comparable接口的类通过实现compareTo方法从而确定该类对象的排序方式。例Cat.java、TestListCollections.java15Map接口实现Map接口的类用来存储键-值对。Map接口的实现类有HashMap和TreeMap等。Map类中存储的键-值对通过键来标识,所以键值不能重复。

Objectput(Objectkey,Objectvalue)将指定的值与此映射中的指定键关联Objectget(Objectkey)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null。Objectremove(Objectkey)如果存在一个键的映射关系,则将其从此映射中移除intsize()返回此映射中的键-值映射关系数。booleanisEmpty()如果此映射未包含键-值映射关系,则返回true。例16Map的存储方式17Keyvaluekey1#############key2#############key5#############key3#############key4#############key6#############……HashMap的遍历18HashMapm=newHashMap();Iteratoriter=m.entrySet().iterator();while(iter.hasNext()){Map.Entryme=(Map.Entry)iter.next();e=(Employee)me.getValue();System.out.println(e.toString());}泛型(Generic)泛型(Generic)。JDK1.5新增内容在没有泛型之前,多集合中读取到的每一个对象都必须进行转换。如果不小心插入了类型错误的对象,在运行时的转换处理就会出错泛型引进来之后,可以告诉编译器每个集合中接受哪些对象类型。编译器自动地为你的插入进行转化,并在编译时告知是否插入了类型错误的对象。19泛型的实现20List<String>strList=newArrayList<String>();Set<String>strSet=newHashSet<String>();Map<String,Integer>=newHashMap<String,Integer>();增强型for循环增强型for循环对于遍历array或Collection的时候相当简便缺陷数组:不能方便地访问下标值集合:与使用Iterator相比,不能方便地删除集合中的内容在内部也是调用Iterator总结:除了简单遍历并读出其中的内容外,不建议使用增强型for循环21java.util.Hashtable类

此类实现一个哈希表,除了可以像

HashMap那样用put(),get()方法来访问列表的各个元素外,还实现了Enumeration接口。Hashtableht=newHashtable();Employeee=newEmployee();ht.put(“one”,e);22java.util.Enumeration接口Hashtable.elements()返回Enumeration接口Enumeration接口的方法:hasMoreElements()测试此枚举是否包含更多的元素。nextElement()返回此枚举的下一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论