Collections Overview °集合( Collection)是一个对象的容器,可以存 放对象,便于组织和管理对象 java.util包中定义了各种用于集合操作的类 和接口,这些类和接口构成了Java语言的集 框架( Collection framework) 集合框架中定义了接口对常用的集合类型进 行抽象,还提供了一些优化的对接口的实现 类,简化程序设计
Collections Overview • 集合(Collection)是一个对象的容器,可以存 放对象,便于组织和管理对象 • java.util包中定义了各种用于集合操作的类 和接口,这些类和接口构成了Java语言的集 合框架(Collection Framework) • 集合框架中定义了接口对常用的集合类型进 行抽象,还提供了一些优化的对接口的实现 类,简化程序设计
Collection Framework 根据不同类型的集合的特点和用途,集合框 架在设计的时候将集合分为以下三种类型: (1)数学概念中的集合(Set)-以无序的方式 容纳对象,并且任意两个对象均不相同 2)列表Lis)以一定的顺序容纳对象,能 够对容纳的对象进行随机存取 (3)映射(Map)将对象以一个键(Key)值存 放,根据键值可以访问对应的对象
Collection Framework • 根据不同类型的集合的特点和用途,集合框 架在设计的时候将集合分为以下三种类型: (1) 数学概念中的集合(Set) — 以无序的方式 容纳对象,并且任意两个对象均不相同 (2) 列表(List) — 以一定的顺序容纳对象,能 够对容纳的对象进行随机存取 (3) 映射(Map) — 将对象以一个键(Key)值存 放,根据键值可以访问对应的对象
Collection Interfaces Collection ap Set List
Collection Interfaces • 集合框架中将不同类型的集合和集合相关的 操作抽象为高层的接口,并构成层次结构 • java.util包中定义如下高层集合接口: Collection — 除映射类型外所有集合类型的超类 型,声明了针对集合的通用方法 Set — 用于表示数学概念中的集合 List — 用于表示列表类型集合 Map — 用于表示映射类型的集合 Collection Set List Map
Sorted collections Collection Map Set List SortedMap SortedSet
Sorted Collections • 有序集合指集合中容纳的对象按照一定的规 则进行排序 • 集合框架中提供了Set、List和Map的有序类 型: SortedSet — Set接口的子接口 SortedMap — Map接口的子接口 Collection Set List Map SortedSet SortedMap
Iterator Interface Collection ap Set List SortedMap Iterator Sorted Set List lterator
Iterator Interface • 如何以一种通用的方式遍历访问集合框架中 定义的所有类型的集合? • java.util包中定义了接口Iterator,声明了用 于遍历任何类型的集合中的对象的方法,是 对设计模式中的迭代器模式的应用 • 接口ListIterator扩展了接口Iterator的,增加 了针对List类型的集合的遍历操作 Collection Set List Map SortedSet SortedMap Iterator ListIterator
Collection Map List SortedMai p Hash Set HashMapl Sortedset i Array list RemaP linkeDlist TreeSet TreeMap一使用平衡二叉树算法实现Map接口
Default Implementation • 集合框架中提供了一些常用的集合接口的实 现类: HashSet — 使用散列表算法实现Set接口 TreeSet — 使用平衡二叉树算法实现SortedSet接口 ArrayList — 使用数组存放对象来实现List接口 LinkedList — 使用双向链表来实现List接口 HashMap — 使用散列表算法实现Map接口 TreeMap — 使用平衡二叉树算法实现Map接口 Collection Set List Map SortedSet SortedMap ArrayList LinkedList TreeSet HashSet TreeMap HashMap
java util, Collection Interface 除映射类型的集合外,接口java.uti. Collection是 所有集合类型的超类型,声明了与集合操作相关 的通用方法 public int sized public boolean isEmptyo public boolean contains(object elem) public Objectl toArrayo public Objectl toArray(objectl dest)
java.util.Collection Interface • 除映射类型的集合外,接口java.util.Collection是 所有集合类型的超类型,声明了与集合操作相关 的通用方法 public int size() public boolean isEmpty() public boolean contains(Object elem) public Object[] toArray() public Object[] toArray(Object[] dest)
java util, Collection Interface public add(object elem) public remove(object elem) public boolean containsAll(Collection coll public boolean addAll( Collection coll) public boolean removeAll(Collection coll) public boolean retainAll(Collection col) public void clear public Iterator iterator
java.util.Collection Interface public add(Object elem) public remove(Object elem) public boolean containsAll(Collection coll) public boolean addAll(Collection coll) public boolean removeAll(Collection coll) public boolean retainAll(Collection coll) public void clear() public Iterator iterator()
public void removeLongStrings( Collection coll, int maxLen)( Iterator it=coll. iterator while(it. hasNextoi String str=(String)it. nexto; if(strength(>maxLen) coll.remove(str;错误的删除操作! public void remove LongStrings( Collection coll, int maxLen) Iterator it=coll. iterator 0: while(it. hasNextO) String str=(String)it. nexto if(strlength(>maxLen) it remove;正确的删除操作!
java.util.Iterator Interface • 该接口声明了用于遍历集合的方法: public boolean hasNext() public Object next() public void remove() • 通过调用Collection接口及其子接口的实现类的对 象的iterator()方法可以返回一个该接口的实现类的 对象,使用该对象来遍历访问集合中每个对象 • 在使用Iterator对象遍历集合时,如果要删除集合 中的某个对象,必须使用该接口中remove()方法! public void removeLongStrings(Collection coll, int maxLen){ Iterator it=coll.iterator(); while(it.hasNext()){ String str=(String)it.next(); if(str.length()>maxLen) coll.remove(str); } } 错误的删除操作! public void removeLongStrings(Collection coll, int maxLen){ Iterator it=coll.iterator(); while(it.hasNext()){ String str=(String)it.next(); if(str.length()>maxLen) it.remove(); } } 正确的删除操作!
java, util. Set Interface 该接口并没有声明新的方法,但要求实现类 所表示的集合中不能容纳两个相同的对象 判定两个对象是否相同是一般是通过调用 象的 equals(Object other方法来实现的
java.util.Set Interface • 该接口并没有声明新的方法,但要求实现类 所表示的集合中不能容纳两个相同的对象 • 判定两个对象是否相同是一般是通过调用对 象的equals(Object other)方法来实现的