常用数据结构课件

上传人:汽*** 文档编号:569818006 上传时间:2024-07-31 格式:PPT 页数:51 大小:170KB
返回 下载 相关 举报
常用数据结构课件_第1页
第1页 / 共51页
常用数据结构课件_第2页
第2页 / 共51页
常用数据结构课件_第3页
第3页 / 共51页
常用数据结构课件_第4页
第4页 / 共51页
常用数据结构课件_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《常用数据结构课件》由会员分享,可在线阅读,更多相关《常用数据结构课件(51页珍藏版)》请在金锄头文库上搜索。

1、JAVA 语言第第8讲讲 JAVA的数据结构的数据结构1常用数据结构JAVA 语言第8讲上一讲回顾nString类字符串的定义及其基本操作类字符串的定义及其基本操作 nCharacter类及其基本操作类及其基本操作 nStringBuffer类及其基本操作类及其基本操作 2024/7/312常用数据结构JAVA 语言第8讲学习要点学习要点n了解了解Java集合架构(集合架构(Java Collection Framework)n了解了解Collection接口、接口、Map接口及其子接口接口及其子接口n了解了解Set接口,学会使用接口,学会使用HashSet和和Treesetn了解了解List

2、接口,学会使用接口,学会使用ArrayList类、类、LinkedList类、类、Vector类和类和Stack类类n了解了解HashMap类和类和TreeMap类类n学会使用学会使用Collection类和类和Arrays类中的静态方类中的静态方法法 2024/7/313常用数据结构JAVA 语言第8讲8.1 Java集合架构概述集合架构概述n集合集合(Collection)是一个对象的容器,可以存放是一个对象的容器,可以存放对象,便于组织和管理对象对象,便于组织和管理对象njava.util包包中定义了各种用于集合操作的类和中定义了各种用于集合操作的类和接口,这些类和接口构成了接口,这些类

3、和接口构成了Java语言的语言的集合框集合框架架(Collection Framework)n集合框架中定义了接口对常用的集合类型进行集合框架中定义了接口对常用的集合类型进行抽象,还提供了一些优化的对接口的实现类,抽象,还提供了一些优化的对接口的实现类,简化程序设计简化程序设计2024/7/314常用数据结构JAVA 语言第8讲Collection Frameworkn根据不同类型的集合的特点和用途,集合框架在根据不同类型的集合的特点和用途,集合框架在设计的时候将集合分为以下三种类型:设计的时候将集合分为以下三种类型:nSet(集):集合中的对象不按特定方式排序,并且没有重复对象。它的有些实现

4、类能对集合中对象按特定方式排序。nList(列表):集合中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象。List与数组有些相似。nMap(映射):集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复。它的有些实现类能对集合中的键对象进行排序。2024/7/315常用数据结构JAVA 语言第8讲Default Implementationn集合框架中提供了一些常用的集合接口集合框架中提供了一些常用的集合接口的实现类:的实现类: HashSet 使用散列表算法实现使用散列表算法实现Set接口接口 TreeSet 使用平衡二叉树算法实现使

5、用平衡二叉树算法实现SortedSet接口接口 ArrayList 使用数组存放对象来实现使用数组存放对象来实现List接口接口 LinkedList 使用双向链表来实现使用双向链表来实现List接口接口 HashMap 使用散列表算法实现使用散列表算法实现Map接口接口 TreeMap 使用平衡二叉树算法实现使用平衡二叉树算法实现Map接口接口CollectionSetListMapSortedSetSortedMapArrayListLinkedListTreeSetHashSetTreeMapHashMapVectorStack2024/7/316常用数据结构JAVA 语言第8讲8.2C

6、ollection 接口、接口、Map接口及其子接口接口及其子接口n集合框架中将不同类型的集合和集合相集合框架中将不同类型的集合和集合相关的操作抽象为高层的接口,并构成层关的操作抽象为高层的接口,并构成层次结构次结构njava.util包中定义如下高层集合接口:包中定义如下高层集合接口: Collection 除映射类型外所有集合类型的超除映射类型外所有集合类型的超类型,声明了针对集合的通用方法类型,声明了针对集合的通用方法 Set 用于表示数学概念中的集合用于表示数学概念中的集合 List 用于表示列表类型集合用于表示列表类型集合 Map 用于表示映射类型的集合用于表示映射类型的集合Coll

7、ectionSetListMap2024/7/317常用数据结构JAVA 语言第8讲1 Collection接口(java.util.Collection Interface)n接口接口java.util.Collection是所有集合类型的超类是所有集合类型的超类型型。它声明所有类集都将拥有的核心方法。它声明所有类集都将拥有的核心方法n public int size() public boolean isEmpty() public boolean contains(Object elem) public Object toArray() public Object toArray(Obj

8、ect dest)2024/7/318常用数据结构JAVA 语言第8讲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 clea

9、r() public Iterator iterator()2024/7/319常用数据结构JAVA 语言第8讲n这些方法用于在集合中添加、删除和查这些方法用于在集合中添加、删除和查询元素。询元素。2024/7/3110常用数据结构JAVA 语言第8讲2 Set接口和接口和Sorted Collectionsn有序集合有序集合指集合中容纳的对象按照一定指集合中容纳的对象按照一定的规则进行排序的规则进行排序n集合框架中提供了集合框架中提供了Set、List和和Map的有的有序类型:序类型: SortedSet Set接口的子接口接口的子接口 SortedMap Map接口的子接口接口的子接口Co

10、llectionSetListMapSortedSetSortedMap2024/7/3111常用数据结构JAVA 语言第8讲java.util.Set Interfacen该接口并没有声明新的方法,但要求实该接口并没有声明新的方法,但要求实现类所表示的集合中不能容纳两个相同现类所表示的集合中不能容纳两个相同的对象的对象n判定两个对象是否相同是一般是通过调判定两个对象是否相同是一般是通过调用对象的用对象的equals(Object other)方法来方法来实现的实现的2024/7/3112常用数据结构JAVA 语言第8讲java.util.SortedSet Interfacen该接口扩展了接

11、口该接口扩展了接口Set,新增了与有序集新增了与有序集合相关的操作:合相关的操作: public Object first() public Object last() public SortedSet subSet(Object min, Object max) public SortedSet headSet(Object max) public SortedSet tailSet(Object min) public Comparator comparator()SortedSet intSet=new TreeSet();intSet.add(new Integer(50);intSe

12、t.add(new Integer(25);intSet.add(new Integer(100);intSet.add(new Integer(-15);System.out.println(intSet.first();System.out.println(intSet.last();SortedSet subSet=intSet.tailSet(new Integer(25);Iterator it=subSet.iterator();while(it.hasNext() System.out.println(it.next();-1510025501002024/7/3113常用数据结

13、构JAVA 语言第8讲3 List接口nList接口扩展了接口扩展了Collection并声明存储一并声明存储一系列元素的类集的特性。使用一个基于系列元素的类集的特性。使用一个基于零的下标,元素可以通过它们在列表中零的下标,元素可以通过它们在列表中的位置被插入和访问。一个列表可以包的位置被插入和访问。一个列表可以包含复制元素。含复制元素。n除了由除了由Collection定义的方法之外,定义的方法之外,List还定义了一些它自己的方法。还定义了一些它自己的方法。2024/7/3114常用数据结构JAVA 语言第8讲java.util.List Interfacen由于列表集合中存放的是对象的有

14、序序列,因此由于列表集合中存放的是对象的有序序列,因此该接口新增了与有序性相关的方法:该接口新增了与有序性相关的方法: public Object get(int index) public Object set(int index, Object elem) public void add(int index, Object elem) public Object remove(int index) public int indexOf(Object elem) public int lastIndexOf(Object elem) public List subList(int min,

15、int max) ListIterator listIterator() ListIterator listIterator(int index)2024/7/3115常用数据结构JAVA 语言第8讲2024/7/3116常用数据结构JAVA 语言第8讲4 Iterator Interfacen如何以一种通用的方式遍历访问集合框如何以一种通用的方式遍历访问集合框架中定义的所有类型的集合架中定义的所有类型的集合?njava.util包中定义了包中定义了接口接口Iterator,声声明了用于遍历任何类型的集合中的对象明了用于遍历任何类型的集合中的对象的方法,是对设计模式中的迭代器模式的方法,是对设

16、计模式中的迭代器模式的应用的应用n接口接口ListIterator扩展了接口扩展了接口Iterator的,的,增加了针对增加了针对List类型的集合的遍历操作类型的集合的遍历操作CollectionSetListMapSortedSetSortedMapIteratorListIterator2024/7/3117常用数据结构JAVA 语言第8讲java.util.Iterator Interfacen该接口声明了用于遍历集合的方法:该接口声明了用于遍历集合的方法: public boolean hasNext() public Object next() public void remove

17、()n通过调用通过调用Collection接口及其子接口的实现类接口及其子接口的实现类的对象的的对象的iterator()方法可以返回一个该接口方法可以返回一个该接口的实现类的对象,使用该对象来遍历访问集合的实现类的对象,使用该对象来遍历访问集合中每个对象中每个对象n在使用在使用Iterator对象遍历集合时,如果要删除集对象遍历集合时,如果要删除集合中的某个对象,必须使用该接口中合中的某个对象,必须使用该接口中remove()方法!方法!public void removeLongStrings(Collection coll, int maxLen) Iterator it=coll.it

18、erator(); 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(); 正确的删除操作!2024/7/3118

19、常用数据结构JAVA 语言第8讲java.util.ListIterator Interfacen该接口扩展了接口该接口扩展了接口Iterator,新增了用于列新增了用于列表操作的方法:表操作的方法: public void add(Object elem) public void set(Object elem) public boolean hasPrevious() public Object previous() public int previousIndex() public int nextIndex()List objList=new ArrayList();objList.a

20、dd(new Integer(100);objList.add(new Double(123.5);objList.add(“Java”);ListIterator it=objList.listIterator(objList.size();while(it.hasPrevious() Object obj=it.previous(); System.out.println(obj);Java123.51002024/7/3119常用数据结构JAVA 语言第8讲5 Map和和SortedMap接口接口n映射(map)是一个存储关键字和值的关联或者说是关键字/值对的对象。给定一个关键字,可以得

21、到它的值。关键字和值都是对象。关键字必须是唯一的。但值是可以被复制的。有些映射可以接收null关键字和null值。而有的则不行。2024/7/3120常用数据结构JAVA 语言第8讲 java.util.Map Interfacen映射映射表示一个表示一个键键/值值(key/value)对对,通过,通过“键键”可以快速的找到可以快速的找到“值值”n该接口声明了一下于映射相关的方法:该接口声明了一下于映射相关的方法: public int size() public boolean isEmpty() public boolean containsKey(Object key) public b

22、oolean containsValue(Object value)2024/7/3121常用数据结构JAVA 语言第8讲java.util.Map Interface public Object get(Object key) public Object put(Object key, Object value) public Object remove(Object key) public void putAll(Map otherMap) public void clear() public Set keySet() public Collection values() Map scor

23、eMap=new HashMap();scoreMap.put(“200101004”,new Float(85.5);scoreMap.put(“200101002”,new Float(76);scoreMap.put(“200101001”,new Float(88);scoreMap.put(“200101003”,new Float(90);Float score=(Float)scoreMap.get(“200101001”);System.out.println(“sno: 200101001 score: ”+score);sno: 200101001 score: 85.52

24、024/7/3122常用数据结构JAVA 语言第8讲SortedMap接口nSortedMap接口扩展了接口扩展了Map,它确保了各项它确保了各项按关键字升序排序。按关键字升序排序。n当调用映射中没有的项时,其中的几种方法引当调用映射中没有的项时,其中的几种方法引发一个发一个NoSuchElement Exception异常。当异常。当对象与映射中的元素不兼容时,则引发一个对象与映射中的元素不兼容时,则引发一个ClassCastException异常。当试图使用映射异常。当试图使用映射不允许使用的不允许使用的null对象时,则引发一个对象时,则引发一个NullPointerException异

25、常。异常。2024/7/3123常用数据结构JAVA 语言第8讲java.util.SortedMap Interfacen该接口扩展了该接口扩展了Map接口,它的实现类能接口,它的实现类能对映射中的对映射中的键键(Key)值值进行排序,它新增进行排序,它新增了与有序的键值相关的方法:了与有序的键值相关的方法: public Object firstKey() public Object lastKey() public SortedMap subMap(Object minKey, Object maxKey) public SortedMap headMap(Object maxKey)

26、public SortedMap tailMap(Object minKey)Map scoreMap=new TreeMap();scoreMap.put(“200101004”,new Float(85.5);scoreMap.put(“200101002”,new Float(76);scoreMap.put(“200101001”,new Float(88);scoreMap.put(“200101003”,new Float(90);Set snoSet=scoreMap.keySet();Iterator it=snoSet.iterator();Object sno=null;w

27、hile(it.hasNext() sno=it.next(); System.out.println(scoreMap.get(sno);88769085.52024/7/3124常用数据结构JAVA 语言第8讲3 AbstractSet类和HashSet类nAbstractSet类扩展了类扩展了AbstractCollection类(它实现了类(它实现了Collection接口中除接口中除size和和iterator之外之外的所有方法),并实现了的所有方法),并实现了Set,为为equals方法和方法和hashCode方法提供了具体实现。方法提供了具体实现。nsize方法和方法和itera

28、tor方法并未在方法并未在AbstractSet类中实现,所以它是一个抽类中实现,所以它是一个抽象类。象类。2024/7/3125常用数据结构JAVA 语言第8讲nHashSet扩展扩展AbstractSet并且实现并且实现Set接口。接口。它创建一个类集,该类集使用散列表进行存储。它创建一个类集,该类集使用散列表进行存储。n在散列(在散列(hashing)中,一个关键字的信息内中,一个关键字的信息内容被用来确定唯一的一个值,称为散列码容被用来确定唯一的一个值,称为散列码(hash code)。)。而散列码被用来当做与关键而散列码被用来当做与关键字相连的数据的存储下标。字相连的数据的存储下标。

29、n散列法的优点在于即使对于大的集合,它允许散列法的优点在于即使对于大的集合,它允许一些基本操作如一些基本操作如add( ),contains( ),remove( )和和size( )方法的运行时间保持不变。方法的运行时间保持不变。n示例示例UsingHashSet.java2024/7/3126常用数据结构JAVA 语言第8讲8.4 TreeSet类和Comparator接口nSortedSet是是Set的子接口,它能保证对的子接口,它能保证对集内的元素进行排序。而集内的元素进行排序。而TreeSet是实是实现现SortedSet接口的具体类。接口的具体类。n排序是建立在比较的基础上的,在排

30、序是建立在比较的基础上的,在Java中,有两种比较对象的方法(其中之一中,有两种比较对象的方法(其中之一就是使用就是使用Comparator接口)。接口)。2024/7/3127常用数据结构JAVA 语言第8讲1.TreeSet类nTreeSet为使用树来进行存储的为使用树来进行存储的Set接口提供接口提供了一个工具,对象按升序存储。在存储了大量了一个工具,对象按升序存储。在存储了大量的需要进行快速检索的排序信息的情况下,的需要进行快速检索的排序信息的情况下,TreeSet是一个很好的选择。是一个很好的选择。n下面的构造函数定义为:下面的构造函数定义为:nTreeSet( )nTreeSet(

31、Collection c)nTreeSet(Comparator comp)nTreeSet(SortedSet ss)n示例示例UsingTreeSet.java2024/7/3128常用数据结构JAVA 语言第8讲2 Comparable接口n对象与集合中的其它对象进行比较,可对象与集合中的其它对象进行比较,可分为两种情况:分为两种情况: (1) 如果对象所属的类实现了如果对象所属的类实现了java.lang.Comparable接口,则调用对象的接口,则调用对象的compareTo(Object other)比较不同的对象,比较不同的对象,否则按否则按(2) (2) 使用集合对象中的使用

32、集合对象中的Comparator接口的接口的实现类对象的实现类对象的compare(Object obj1, Object obj2)比较不同的对象比较不同的对象2024/7/3129常用数据结构JAVA 语言第8讲java.lang.Comparable Interfacen该接口只声明了唯一的方法:该接口只声明了唯一的方法: public int compareTo(Object other)n除除Boolean类外,所有基本数据类型的类外,所有基本数据类型的Wrapper类都实现了该接口类都实现了该接口nString类、类、java.io.File类、类、java.util.Date类等

33、都实现了该接口类等都实现了该接口n实现实现Comparable接口在设计目的上是指定类接口在设计目的上是指定类的对象的自然顺序,但是的对象的自然顺序,但是不同类的对象不能使不同类的对象不能使用该接口比较!用该接口比较!2024/7/3130常用数据结构JAVA 语言第8讲java.util.Comparator Interfacen但对象不能实现但对象不能实现Comparable接口时可接口时可以使用该接口为有序集合指定对象的比以使用该接口为有序集合指定对象的比较规则较规则n该接口中声明了用于比较对象的方法:该接口中声明了用于比较对象的方法: public int compare(Object

34、 obj1, Object obj2)n该接口的实现类称为该接口的实现类称为“比较器比较器”,可作,可作为有序集合类的构造函数的参数为有序集合类的构造函数的参数 public TreeSet(Comparator c) public TreeMap(Comparator c)SortedSet intSet=new TreeSet(new Comparator() public int compare(Object obj1, Object obj2) return pareTo(obj2); );intSet.add(new Integer(50);intSet.add(new Intege

35、r(25);intSet.add(new Integer(100);intSet.add(new Integer(-15);Iterator it=intSet.iterator();while(it.hasNext() System.out.println(it.next();1005025-152024/7/3131常用数据结构JAVA 语言第8讲8.5 ArrayList类和LinkedList类nArrayList类和类和LinkedList类都是类都是List接口的接口的具体实现。这两种类各有优缺点,需要根据所具体实现。这两种类各有优缺点,需要根据所要解决的问题的特点进行选择。要解决

36、的问题的特点进行选择。nArrayList类实现了具有可变长度的数组,支类实现了具有可变长度的数组,支持随机存取。持随机存取。n每个每个ArrayList实例都有一个容量实例都有一个容量(Capacity),),即用于存储元素的数组的大小,即用于存储元素的数组的大小,这个容量会随着新元素的不断增加而自动增长。这个容量会随着新元素的不断增加而自动增长。2024/7/3132常用数据结构JAVA 语言第8讲nLinkedList类适用于需要频繁地插入和类适用于需要频繁地插入和删除元素的情况。删除元素的情况。nLinkedList类以链接列表的方式实现了类以链接列表的方式实现了List接口,它提供了

37、从列表的首尾检索、接口,它提供了从列表的首尾检索、插入和删除元素的方法,这使得插入和删除元素的方法,这使得LinkedList可被用作堆栈(可被用作堆栈(stack),),队队列(列(queue)或双向队列(或双向队列(deque)。)。n示例示例UsingList.java2024/7/3133常用数据结构JAVA 语言第8讲8.6 Vector类和Stack类nVector类是类是List接口的一个具体实现,它非常接口的一个具体实现,它非常类似于类似于ArrayList,但但Vector是同步的。是同步的。nStack类继承自类继承自Vector,实现一个后进先出的实现一个后进先出的堆栈。

38、堆栈。n这两个类在这两个类在Java集合架构出现之前就得到了集合架构出现之前就得到了Java的支持,在的支持,在Java集合架构中,这两个类集合架构中,这两个类得到了重新设计,但它们用于存储量的原有格得到了重新设计,但它们用于存储量的原有格式方法都被保留了下来。式方法都被保留了下来。n示例示例UsingVector.java2024/7/3134常用数据结构JAVA 语言第8讲8.7 HashMap类和TreeMap类nHashMap类和类和TreeMap类是类是Map接口接口的两种具体实现。它们也同样具有各不的两种具体实现。它们也同样具有各不相同的优缺点,分别适用于不同的情况。相同的优缺点,

39、分别适用于不同的情况。n使用使用HashMap类可以很方便地定位映射类可以很方便地定位映射中的值对象、插入映射和删除映射;而中的值对象、插入映射和删除映射;而实现实现SortedMap的的TreeMap类可以非常类可以非常高效地按照排序顺序遍历键。高效地按照排序顺序遍历键。n示例:示例:UsingMap.java2024/7/3135常用数据结构JAVA 语言第8讲8.8 Collections类和Arrays类n在在Java集合架构中,有两个提供很多静集合架构中,有两个提供很多静态方法的类:态方法的类:Collections类和类和Arrays类。类。nCollection类中包含一些操作集

40、合的静类中包含一些操作集合的静态方法以及创建同步集合类和只读集合态方法以及创建同步集合类和只读集合类的映射类的映射.nArrays类中包含很多操作标准类中包含很多操作标准Java数组数组的静态方法。的静态方法。n本节将介绍如何使用这些静态方法。本节将介绍如何使用这些静态方法。2024/7/3136常用数据结构JAVA 语言第8讲1 java.util.Collections Classn该类定义了用于许多与集合操作相关的静态方法该类定义了用于许多与集合操作相关的静态方法和常量和常量 static List EMPTY_LIST static Map EMPTY_MAP static Set E

41、MPTY_SET static int binarySearch(List list, Object key) static void copy(List dest, List src) static void fill(List list, Object obj) static void reverse(List list) static void shuffle(List list) static void sort(List) static void s list ,int i, int j)2024/7/3137常用数据结构JAVA 语言第8讲Synchronizing Collect

42、ionn当集合类对象可能被多个线程访问和修当集合类对象可能被多个线程访问和修改时,要使用改时,要使用Collections类中定义的方类中定义的方法创建集合对象的法创建集合对象的同步对象同步对象 static Collection synchronizedCollection(Collection coll) static List synchronizedList(List list) static Set synchronizedSet(Set set) static Map synchronizedMap(Map map) static SortedSet synchronizedSor

43、tedSet(SortedSet set) static SortedMap synchronizedSortedMap(SortedMap map)Collection c = Collections.synchronizedCollection(myCollection);List list = Collections.synchronizedList(new ArrayList(); Map m = Collections.synchronizedMap(new HashMap(); Set s = Collections.synchronizedSet(new HashSet();So

44、rtedMap m = Collections.synchronizedSortedMap(new TreeMap(); SortedSet s = Collections.synchronizedSortedSet(new TreeSet(); 2024/7/3138常用数据结构JAVA 语言第8讲Synchronizing Collectionn当使用当使用Iterator访问被同步的集合时,访问被同步的集合时,必须使用必须使用synchronized语句块并将集合语句块并将集合对象作为锁对象进行同步!对象作为锁对象进行同步!Collection c = Collections.synch

45、ronizedCollection(myCollection);. synchronized(c) Iterator i = c.iterator(); while (i.hasNext() foo(i.next(); 2024/7/3139常用数据结构JAVA 语言第8讲Unmodifiable Collectionn如果要禁止对集合的内容进行修改,可如果要禁止对集合的内容进行修改,可以使用以使用Collections类中定义的方法创建类中定义的方法创建集合对象的不可变对象集合对象的不可变对象 static Collection unmodifiableCollection(Collecti

46、on coll) static List unmodifiableList(List list) static Set unmodifiableSet(Set set) static Map unmodifiableMap(Map map) static SortedSet unmodifiableSortedSet(SortedSet set) static SortedMap unmodifiableSortedMap(SortedMap map)Collection c = Collections. unmodifiableCollection(myCollection);. c.add

47、(obj1); 将抛出UnsupportedOperationException异常2024/7/3140常用数据结构JAVA 语言第8讲2 java.util.Arrays Classn该类定义了许多与数组操作相关的静态方法:该类定义了许多与数组操作相关的静态方法: static List asList(Object a) static binarySearch( a, key) static boolean equals ( a, b) static void fill ( a, val) static void fill ( a, int from, int to, val) stati

48、c void sort ( a) static void sort ( a, int from, int to)String names=“Zhangsan”, “Lisi”, “Wangwu”;List nameList=Arrays.asList(names);int index=Arrays.binarySearch(names, “Lisi”);index=? 1String names2=“Zhangsan”, “Lisi”, “James”;boolean b=Arrays.equals(names, names2);b=? falseint a=new int100;Arrays

49、.fill(a, -1);Arrays.sort(names);names=? Lisi Wangwu Zhangsan2024/7/3141常用数据结构JAVA 语言第8讲The Legacy Collection Typesn为了保证兼容性,为了保证兼容性,java.util包中还有许包中还有许多多遗留的集合类型遗留的集合类型 java.util.Enumeration java.util.Vector java.util.Stack java.util.Dictionary java.util.Hashtable2024/7/3142常用数据结构JAVA 语言第8讲java.util.P

50、roperties Classn该类也属于映射集合类型,要求键该类也属于映射集合类型,要求键/值对必须都是值对必须都是字符串,可以将键字符串,可以将键/值对输出到外部文件中,或者值对输出到外部文件中,或者从文件中读入键从文件中读入键/值度,一般可用于管理系统的配值度,一般可用于管理系统的配置信息置信息 public String getProperty() public void setProperty(String key, String value) public Enumeration propertyNames() public void store(OutputStream out,

51、 String header) pubilc void load(InputStream in)Properties config=new Properties();config.setProperty(“dbname”, “MySQL”);config.setProperty(“dburl”, “jdbc:mysql:/localhost:3306/test”)config.setProperty(“username”, “root”);config.setProperty(“password”, “1234”); config (“db.ini”);config.store(configF

52、ile, “JDBC Connection Config”);2024/7/3143常用数据结构JAVA 语言第8讲Set的一般用法的一般用法Set set=new HashSet();String s1=new String(hello);String s2=s1;String s3=new String(world);set.add(s1);set.add(s2);set.add(s3);System.out.println(set.size(); /打印集合中对象的数目22024/7/3144常用数据结构JAVA 语言第8讲Map(映射)映射)nMap(映射)是一种把键对象和值对象进行映

53、射的集映射)是一种把键对象和值对象进行映射的集合,它的每一个元素都包含一对键对象和值对象。合,它的每一个元素都包含一对键对象和值对象。n向向Map集合中加入元素时,必须提供一对键对象和值集合中加入元素时,必须提供一对键对象和值对象,从对象,从Map集合中检索元素时,只要给出键对象,集合中检索元素时,只要给出键对象,就会返回对应的值对象。就会返回对应的值对象。n接口接口Map提供了根据关键字找对应的值的方法提供了根据关键字找对应的值的方法get(),定义如下:定义如下: Object get(Object key)n接接口口Map还还提提供供了了设设置置关关键键字字和和对对应应值值的的方方法法p

54、ut(),定义如下:定义如下: Object put(Object key,Object value) 2024/7/3145常用数据结构JAVA 语言第8讲Map的用法n以下程序通过以下程序通过Map的的put(Object key,Object value)方法向集合中加入元素,通过方法向集合中加入元素,通过Map的的get(Object key)方法来检索与键对象对应的值对象:方法来检索与键对象对应的值对象:Map map=new HashMap();map.put(1,Monday);map.put(2,Tuesday);map.put(3,Wendsday);map.put(4,Th

55、ursday);String day=map.get(2); /day的值为的值为“Tuesday”2024/7/3146常用数据结构JAVA 语言第8讲ArrayList类和类和LinkedList类类nArrayList类和类和LinkedList类都是类都是List接口的具体实接口的具体实现。现。nArrayList类实现了具有可变长度的数组,支持随机类实现了具有可变长度的数组,支持随机存取。每个存取。每个ArrayList实例都有一个容量实例都有一个容量(Capacity),),即用于存储元素的数组的大小,这个即用于存储元素的数组的大小,这个容量会随着新元素的不断增加而自动增长。容量会

56、随着新元素的不断增加而自动增长。nLinkedList类适用于需要频繁地插入和删除元素的情类适用于需要频繁地插入和删除元素的情况。况。LinkedList类以链接列表的方式实现了类以链接列表的方式实现了List接口,接口,它提供了从列表的首尾检索、插入和删除元素的方法,它提供了从列表的首尾检索、插入和删除元素的方法,这使得这使得LinkedList可被用作堆栈(可被用作堆栈(stack),),队列队列(queue)或双向队列(或双向队列(deque)。)。2024/7/3147常用数据结构JAVA 语言第8讲Vector类和类和Stack类类nVector类是类是List接口的一个具体实现,接

57、口的一个具体实现,它非常类似于它非常类似于ArrayList,但,但Vector是是同步的。同步的。nStack类继承自类继承自Vector,实现一个后,实现一个后进先出的堆栈。进先出的堆栈。n这两个类在这两个类在Java集合架构出现之前就集合架构出现之前就得到了得到了Java的支持。的支持。2024/7/3148常用数据结构JAVA 语言第8讲小结n集合架构(集合架构(Java Collection Framework)nCollection接口、接口、Map接口及其子接口接口及其子接口nSet接口,接口,HashSet和和TreesetnList接口,接口,ArrayList类、类、LinkedList类、类、Vector类和类和Stack类类nHashMap类和类和TreeMap类类nCollection类和类和Arrays类中的静态方法类中的静态方法 2024/7/3149常用数据结构JAVA 语言第8讲课外任务1、修改运动员成绩排名程序,试用修改运动员成绩排名程序,试用JAVA提供的数据结构实现该问题要求。提供的数据结构实现该问题要求。 2024/7/3150常用数据结构JAVA 语言第8讲2024/7/3151常用数据结构

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号