《第6章 集合(一).ppt》由会员分享,可在线阅读,更多相关《第6章 集合(一).ppt(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第第第6 6章章章章集合(一)集合(一)集合(一)集合(一)JSPJSP基础知识基础知识基础知识基础知识什么是集合什么是集合 通常情况下,把具有相同性质的一类东西,汇聚成一通常情况下,把具有相同性质的一类东西,汇聚成一个整体,就可以称为集合。比如,用个整体,就可以称为集合。比如,用Java编程的所有程序编程的所有程序员,全体中国人等。员,全体中国人等。通常集合有两种表示法,一种是列举法,比如集合通常集合有两种表示法,一种是列举法,比如集合A1,2,3,4,另一种是性质描述法,比如集合,另一种是性质描述法,比如集合B=X|0X100且且X属于整数。属于整数。6.1 6.1 集合概述集合概述什么
2、是集合框架什么是集合框架集集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。算的算法。6.1 6.1 集合概述集合概述 接口接口是表示集合的抽象数据类型 算法算法是对实现接口的对象执行计算的方法 实现实现是接口的实际实现 第第5章章介介绍绍了了数数组组,数数组组的的长长度度是是固固定定的的,且且只只能能存存放放相相同同类类型型的的数数据据。可可以以存存放放基基本本类类型型的的数数据据,也也可可以
3、以存存入入对像类型的数据。对像类型的数据。为为了了使使程程序序能能方方便便的的存存取取不不固固定定数数目目的的数数据据,JDK提提供供了了java集集合合。集集合合就就是是一一个个动动态态的的对对象象数数组组,是是对对一一些些实实现现好好的的数数据据结结构构进进行行了了包包装装,这这样样在在使使用用时时就就会会非非常常方方便。便。所有的所有的Java集合类都位于集合类都位于java.util包中。包中。6.1 6.1 集合概述集合概述Java2的集合框架,抽其核心,主要有三种:的集合框架,抽其核心,主要有三种:List、Set和和Map。1.Set(集集):集集合合中中的的对对象象不不按按特特
4、定定的的方方式式排排序序。不不能能有有重重复复的的对对象象。但它的某些子类,对对但它的某些子类,对对象象按特定的方式排序。按特定的方式排序。2.List(列列表表):集集合合中中的的对对象象按按索索引引的的位位置置排排序序,可可以以有有重重复复的的对对象象,允许按照索引查找对,允许按照索引查找对象象。List有点像数组。有点像数组。3.Map(映映射射):键键值值对对。集集合合中中没没有有重重复复的的键键,可可以以有有重重复复的的值值。它它的的某某些些子子类类,对对集集合合中中的的键键对对象象进进行行排排序序。注注意意:键键和和值值必必须须都是对都是对象象。6.1 6.1 集合概述集合概述Co
5、llectionSetListSortedSetMapSortedMap6.1 6.1 集合概述集合概述简化图简化图6.1 6.1 集合概述集合概述Collection接口接口List接口接口-迭代顺序与插入顺序相同,集合中可以存在相同数据。迭代顺序与插入顺序相同,集合中可以存在相同数据。LinkedList类类-以链表的形式实现,插入删除效率高。以链表的形式实现,插入删除效率高。ArrayList类类-使用可变数组实现的使用可变数组实现的List。插入或删除一个元素代价较大,创。插入或删除一个元素代价较大,创建开销较小,随机访问较快。建开销较小,随机访问较快。Vector类类-可以实现可增长
6、的对象数组,具有同步支持。可以实现可增长的对象数组,具有同步支持。Stack-后进先出(后进先出(LIFO)的对象堆栈。)的对象堆栈。Set接口接口-不能包含重复的元素,只能包含一个不能包含重复的元素,只能包含一个NULL。HashSet类类-哈希法排序,迭代顺序与插入顺序不相同。通常比较适用于那哈希法排序,迭代顺序与插入顺序不相同。通常比较适用于那些对内容的规模比较敏感的搜索、插入、删除等操作。些对内容的规模比较敏感的搜索、插入、删除等操作。LinkedHashSet类(继承类(继承HashSet类,实现类,实现Set接口)接口)-哈希法排序,迭代顺哈希法排序,迭代顺序与插入顺序相同。序与插
7、入顺序相同。SortedSet TreeSet6.1 6.1 集合概述集合概述Map接口接口-键值对,存取数据都要通过指定键值来完成。键值对,存取数据都要通过指定键值来完成。HashMap-一个一个Map的散列表实现。非常通用的集合,查询的散列表实现。非常通用的集合,查询与插入所花时间较少。与插入所花时间较少。LinkedHashMapTreeMapHashtable WeakHashMap6.1 6.1 集合概述集合概述6.2 6.2 集合排序策略集合排序策略1.Ordered:按插入的顺序排列:按插入的顺序排列Ordered在英文中的含义是按照某种由具体情况决定的顺在英文中的含义是按照某种
8、由具体情况决定的顺序进行排序。这种顺序是由后天指定的,是由具体情况的序进行排序。这种顺序是由后天指定的,是由具体情况的客观因素造成的。客观因素造成的。Ordered排序意味着可以按照某种后天规定的顺序遍历其排序意味着可以按照某种后天规定的顺序遍历其中所有的元素。中所有的元素。例例如排队购买商品,是按照先来先买的顺序进行的,这次如排队购买商品,是按照先来先买的顺序进行的,这次排队在前面的人下次未必在前面。排队在前面的人下次未必在前面。再比如数组,是按照其索引位置建立的顺序,这是外界的再比如数组,是按照其索引位置建立的顺序,这是外界的顺序,并不是由元素自身的条件或本质来决定的顺序。顺序,并不是由元
9、素自身的条件或本质来决定的顺序。2.Sorted:排序:排序Sorted在英文中的含义是按照天然的顺序进行排序,在英文中的含义是按照天然的顺序进行排序,这种顺序是由先天指定的、自身条件影响,其代表了这种顺序是由先天指定的、自身条件影响,其代表了参与排序元素的本质,不受外界因素的影响。参与排序元素的本质,不受外界因素的影响。如如,人的年龄大小,是由出生时间决定的,永不改变。,人的年龄大小,是由出生时间决定的,永不改变。这都是天然的顺序,可以反映元素本质的顺序。这都是天然的顺序,可以反映元素本质的顺序。Sorted排序意味着可以按照某些先天规定的顺序遍历排序意味着可以按照某些先天规定的顺序遍历集合
10、中所有元素。集合中所有元素。6.2 6.2 集合排序策略集合排序策略6.3 Collection6.3 CollectionCollection接口是构造集合框架的基础。它声明所有接口是构造集合框架的基础。它声明所有集合都将拥有的核心方法。一个集合都将拥有的核心方法。一个Collection代表一组代表一组Object的集合,这些的集合,这些Object被称作被称作Collection的元素。的元素。根根据用途的不同,据用途的不同,Collection又划分为又划分为List与与Set。Collection位于位于java.util包中。包中。public interface Collecti
11、on extends Iterable public abstract int size();/取得取得Collection的容量(元素数目)的容量(元素数目)public abstract boolean isEmpty();/判断是否为空判断是否为空 public abstract boolean contains(Object obj);/判断是否包含某对象元素判断是否包含某对象元素 public abstract Iterator iterator();/取得对所有元素的遍历。可以通过取得对所有元素的遍历。可以通过Iterator提供的方提供的方法遍历集合的元素法遍历集合的元素 pub
12、lic abstract Object toArray();/将集合元素以数据形式返回将集合元素以数据形式返回 public abstract Object toArray(Object aobj);public abstract boolean add(Object obj);/向集合体插入一个新的元素向集合体插入一个新的元素 public abstract boolean remove(Object obj);/从集合体删除一个元素从集合体删除一个元素 public abstract boolean containsAll(Collection collection);/是否包含所有是否包
13、含所有collection里的里的所有元素所有元素 public abstract boolean addAll(Collection collection);/插入插入collection里的所有元素里的所有元素 public abstract boolean removeAll(Collection collection);/移除移除collection里的所有元素里的所有元素 public abstract boolean retainAll(Collection collection);public abstract void clear();/移除所有元素移除所有元素 /.other
14、 methods6.3 Collection6.3 Collection6.3 Collection6.3 Collection方法方法描述描述boolean add(Object obj)将将obj加入加入到调用类集中。如果到调用类集中。如果obj被加入到类集中了,被加入到类集中了,则返回则返回true;如果;如果obj已经是类集中的一个成员或已经是类集中的一个成员或类集不能被复制时,则返回类集不能被复制时,则返回falseboolean addAll(Collection c)将将c中的所有元素都加入到调用类集中,如果操作成功中的所有元素都加入到调用类集中,如果操作成功(也就是说元素被加入
15、了),则返回(也就是说元素被加入了),则返回true;否则返否则返回回falsevoid clear()从调用类集中删除所有元素从调用类集中删除所有元素boolean contains(Object obj)如果如果obj是调用类集的一个元素,则返回是调用类集的一个元素,则返回true,否则,否则,返回返回falseboolean containsAll(Collection c)如果调用类集包含了如果调用类集包含了c中的所有元素,则返回中的所有元素,则返回true;否;否则,返回则,返回falseboolean equals(Object obj)如果调用类集与如果调用类集与obj相等,则返
16、回相等,则返回true;否则返回;否则返回falseint hashCode()返回调用类集的散列码返回调用类集的散列码boolean isEmpty()如果调用类集是空的,则返回如果调用类集是空的,则返回true;否则返回;否则返回falseIterator iterator()返回调用类集的迭代程序返回调用类集的迭代程序6.3 Collection6.3 CollectionBoolean remove(Object obj)从调用类集中删除从调用类集中删除obj的一个实例。如果这个元素被的一个实例。如果这个元素被删除了,则返回删除了,则返回true;否则返回;否则返回falseBoole
17、an removeAll(Collection c)从调用类集中删除从调用类集中删除c的所有元素。如果类集被改变了的所有元素。如果类集被改变了(也就是说元素被删除了),则返回(也就是说元素被删除了),则返回true;否则;否则返回返回falseBoolean retainAll(Collection c)删除调用类集中除了包含在删除调用类集中除了包含在c中的元素之外的全部元中的元素之外的全部元素。如果类集被改变了(也就是说元素被删除了)素。如果类集被改变了(也就是说元素被删除了),则返回,则返回true,否则返回,否则返回falseint size()返回调用类集中元素的个数返回调用类集中元素
18、的个数Object toArray()返回一个数组,该数组包含了所有存储在调用类集返回一个数组,该数组包含了所有存储在调用类集中的元素。数组元素是类集元素的拷贝中的元素。数组元素是类集元素的拷贝Object toArray(Object array)返回一个数组,该数组仅仅包含了那些类型与数组返回一个数组,该数组仅仅包含了那些类型与数组元素类型匹配的类集元素。数组元素是类集元素元素类型匹配的类集元素。数组元素是类集元素的拷贝。如果的拷贝。如果array的大小与匹配元素的个数相等,的大小与匹配元素的个数相等,它们被返回到它们被返回到array。如果。如果array的大小比匹配元的大小比匹配元素的
19、个数小,将分配并返回一个所需大小的新数素的个数小,将分配并返回一个所需大小的新数组,如果组,如果array的大小比匹配元素的个数大,在数的大小比匹配元素的个数大,在数组中,在类集元素之后的单元被置为组中,在类集元素之后的单元被置为null。如果。如果任一类集元素的类型都不是任一类集元素的类型都不是array的子类型,则引的子类型,则引发一个发一个ArrayStoreException异常异常如何遍历如何遍历Collection中的每一个元素?不论中的每一个元素?不论Collection的的实际类型如何,它都支持一个实际类型如何,它都支持一个iterator()的方法,该方法返的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问回一个迭代子,使用该迭代子即可逐一访问Collection中中每一个元素。典型的用法如下:每一个元素。典型的用法如下:6.3 Collection6.3 Collection/获得一个迭代子获得一个迭代子Iterator it=collection.iterator();while(it.hasNext()Object obj=it.next();/得到下一个元素得到下一个元素
限制150内