对象群体的组织_第1页
对象群体的组织_第2页
对象群体的组织_第3页
对象群体的组织_第4页
对象群体的组织_第5页
已阅读5页,还剩103页未读, 继续免费阅读

下载本文档

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

文档简介

1、第七章第七章 对象群体的组织对象群体的组织郑莉郑莉JAVA语言程序设计2目录目录l7.1 对象数组对象数组l7.3 集合(集合(Collection, Map)l7.4 本章小结本章小结37.1 对象数组对象数组l数组数组 在Java提供的存储及随机访问对象序列的各种方法中,数组是效率最高的一种l类型检查l边界检查 优点l数组知道其元素的类型l编译时的类型检查l大小已知 代价l数组对象的大小是固定的,在生存期内大小不可变4l对象数组对象数组 数组元素是类的对象 所有元素具有相同的类型 每个元素都是一个对象的引用对象数组7.1 对象数组对象数组(续续)5l静态初始化:在声明和定义数组的同时对数组

2、元素静态初始化:在声明和定义数组的同时对数组元素进行初始化,例如:进行初始化,例如: BankAccount accounts = new BankAccount(“Zhang, 100.00), new BankAccount(“Li, 2380.00), new BankAccount(“Wang, 500.00), new BankAccount(“Liu, 175.56), new BankAccount(“Ma, 924.02);l动态初始化:使用运算符动态初始化:使用运算符new,需要经过两步:需要经过两步: 首先给数组分配空间type arrayName =new typearr

3、aySize; 然后给每一个数组元素分配空间arrayName0=new type(paramList);arrayNamearraySize-1=new type(paramList);7.1.1 用数组存储对象用数组存储对象(续续) 对象数组的初始化对象数组的初始化对象数组6l使用数组存储一个班的学生信息及考试成绩。学生使用数组存储一个班的学生信息及考试成绩。学生信息包括学号、姓名、三门课(英语、数学、计算信息包括学号、姓名、三门课(英语、数学、计算机)的成绩及总成绩。机)的成绩及总成绩。l首先声明学生类首先声明学生类Student 属性包括l学号(id),姓名(name),英语成绩(en

4、g),数学成绩(math),计算机成绩(comp),总成绩(sum) 方法包括l构造方法,get方法,set方法,toString方法,equals方法,compare方法(比较两个学生的总成绩, 结果分大于,小于,等于),sum方法(计算总成绩) 实现Serializable接口,以便对象持久化,7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组7import java.io.*;public class Student implements Serializable private String id;/学号private String name;/姓名private i

5、nt eng;/英语成绩private int math; /数学成绩private int comp; /计算机成绩private int sum;/总成绩public Student(String id,String name,int eng,int math,int comp)this.id=id;=name;this.eng=eng;this.math=math;p=comp;sum(); /计算总成绩7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组8public Student(Student s)this.id=s.id;=n

6、ew String();this.eng=s.eng;this.math=s.math;p=p;sum(); /计算总成绩 public void setId(String id)this.id=id;public void setName(String name)=name;7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组9public void setEng(int eng)this.eng=eng;sum(); /计算总成绩public void setMath(int math)this.math=math;sum(); /计算总成绩p

7、ublic void setComp(int comp)p=comp;sum(); /计算总成绩 public String getId()return id;7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组10public String getName()return name;public int getEng()return eng;public int getMath()return math;public int getComp()return comp; public int getSum()return sum;void sum()this.sum=eng+m

8、ath+comp;7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组11public String toString()return getId() + t+getName() + t+getEng() + t+getMath() +t+getComp() + t+getSum();public boolean equals(Object x) if (this.getClass() != x.getClass() return false; Student b = (Student) x; return (this.getId().equals(b.getId(); /比较

9、成绩大小,当前对象成绩比参数对象成绩大时返回1,相等时返回0,其它返回-1.public int compare(Student A)if(this.getSum()A.getSum() return 1;else if(this.getSum()=A.getSum() return 0;else return -1;7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组12l下面声明班级类下面声明班级类StudentClass: 属性包括l班级名称(name),容量(capacity),学生(students),实际人数(size)。 方法包括l构造方法,get方法,set方法

10、,toString方法。public class StudentClassprivate String name; /班级名称班级名称static int capacity = 40; /最大容量最大容量private Student students; /学生学生private int size; /实际人数实际人数7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组13public StudentClass(String name, int size) = name;this.size = size;students = new Studentcapaci

11、ty; public String getName()return name; public int getCapacity()return capacity; public Student getStudents()return students;7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组14public int getSize()return size; public void setName(String name) = name; public void setCapacity(int capacity)this.capacity = cap

12、acity; public void setSize(int size)this.size = size;public void setStudents(Student students)for (int i = 0; isize; i+)this.studentsi = new Student(studentsi);7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组15public String toString()String s;s = 班级: + name +t + 容量: + capacity + t + 实际人数: + size +nn;s = s + “学号”+

13、“t” + “姓名”+“t” + “英语”+“t” + “数学”+“t” + “计算机” +t + 总成绩n;for (int i=0; isize; i+) s = s + studentsi.getId()+t+studentsi.getName()+t +studentsi.getEng()+t+studentsi.getMath()+t +studentsi.getComp()+t+studentsi.getSum()+n; return s;7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组16l下面声明测试类下面声明测试类Tester1(其中其中Keyboard类

14、的声明见第类的声明见第3章例章例3-12),为测试简单,仅生成具有),为测试简单,仅生成具有5名学生的班级,名学生的班级,5名学生的信息从键盘输入,为了避免以后再重复输入,名学生的信息从键盘输入,为了避免以后再重复输入,可将输入的学生信息保存到文件可将输入的学生信息保存到文件中中import java.io.*;public class Tester1public static void main(String args)Student students;StudentClass aClass = new StudentClass(软件软件0201,5); students=new Stude

15、nt5;for (int i=0; i5; i+) studentsi = new Student(getAStudent(i+1);aClass.setStudents(students);System.out.println(aClass);7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组17/将学生信息保存到文件将学生信息保存到文件stu.ser中。中。try FileOutputStream fo = new FileOutputStream(stu.ser); ObjectOutputStream so = new ObjectOutputStream(fo);

16、for (int i=0; i5; i+) so.writeObject(studentsi); so.close(); catch(Exception e) System.out.println(e) ; 7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组18public static Student getAStudent(int i)Student studenti; System.out.println(输入第输入第 + i + 个学生的信息个学生的信息:); System.out.print(学号学号:); String id = Keyboard.getStrin

17、g(); System.out.print(姓名姓名:); String name = Keyboard.getString(); System.out.print(英语成绩英语成绩:); int eng = Keyboard.getInteger(); System.out.print(数学成绩数学成绩:); int math = Keyboard.getInteger(); System.out.print(计算机成绩计算机成绩:); int comp = Keyboard.getInteger(); studenti = new Student(id,name,eng,math,comp

18、); return studenti; 7.1.1 用数组存储对象用数组存储对象(续续) 例例7_1对象数组19l运行结果如下(其中学生信息的输入只显示一部运行结果如下(其中学生信息的输入只显示一部分):分):输入第1个学生的信息:学号:250201姓名:李红英语成绩:88数学成绩:76计算机成绩:60输入第2个学生的信息: 班级:软件0201 容量:40 实际人数:5 学号 姓名 英语 数学 计算机 总成绩250201 李红 88 76 60 224250202 张林 78 67 80 225250203 董玉梅 86 80 75 241250204 张力 70 68 75 21325020

19、5 何为 80 90 78 2487.1.1 用数组存储对象用数组存储对象(续续) 例例7_1运行结果运行结果对象数组20l查找 也称为检索,就是从一组数据中找出所需的具有某种特征的数据项 顺序查找l对所存储的数据从第一项开始(也可以从最后一项开始),依次与所要查找的数据进行比较,直到找到该数据或将全部元素都找完还没有找到该数据为止7.1.1 用数组存储对象用数组存储对象(续续) 为班级类添加为班级类添加查找查找方法方法对象数组21l已知学生的学号,查找此学生是否存在。如果存已知学生的学号,查找此学生是否存在。如果存在,返回其在数组中的下标位置;如果不存在,在,返回其在数组中的下标位置;如果不

20、存在,返回返回-1。顺序查找方法的代码如下。顺序查找方法的代码如下public int find(String id) for (int i = 0; i =0) return false; this.studentssize = new Student( new String(aStudent.getId(), new String(aStudent.getName(), aStudent.getEng(), aStudent.getMath(), aStudent.getComp() ); size+; return true; 7.1.1 用数组存储对象用数组存储对象(续续) 为班级类添

21、加为班级类添加增加增加方法方法对象数组23l已知一个已知一个Student对象,将此对象从数组中删除对象,将此对象从数组中删除public boolean del(Student aStudent)int pos = find(aStudent.getId();if (pos= -1) return false; for (int i = pos+1; isize; i+) studentsi-1 = studentsi;size-;return true;7.1.1 用数组存储对象用数组存储对象(续续) 为班级类编写为班级类编写删除删除方法方法对象数组24l已知学号已知学号,删除一个学生删除

22、一个学生public boolean del(String id)int pos = find(id);if (pos= -1) return false; for (int i = pos+1; isize; i+) studentsi-1 = studentsi;size-;return true;7.1.1 用数组存储对象用数组存储对象(续续) 为班级类添加为班级类添加删除删除方法方法对象数组257.1.2 对数组元素进行排序对数组元素进行排序l排序排序 按照预先规定的准则(如升序或降序等),把数据有次序地排列起来 已经设计出许多排序算法,常用的排序算法有l选择排序l插入排序l交换排序

23、以降序为例进行介绍对象数组26l选择排序的基本思想选择排序的基本思想 先在未排序序列中选一个最小元素,作为已排序子序列 然后再重复地从未排序子序列中选取一个最小元素,把它加到已经排序的序列中,作为已排序子序列的最后一个元素 直到把未排序子序列中的元素处理完为止7.1.2 对数组元素进行排序对数组元素进行排序(续续) 选择排序选择排序对象数组27l用选择排序方法将例用选择排序方法将例7-1中生成的文件中生成的文件stu.ser中的班级学生按总成绩从高到低排序中的班级学生按总成绩从高到低排序 在例7-1中的StudentClass类中增加选择排序方法selectionSort,代码如下public

24、 void selectionSort()Student temp;for (int i=0; isize-1; i+) for (int j=i+1;j0) temp = studentsi; studentsi = studentsj; studentsj = temp; 7.1.2 对数组元素进行排序对数组元素进行排序(续续) 例例7_2对象数组28测试类代码如下测试类代码如下import java.io.*;public class SortTesterpublic static void main(String args)Student students=new Student5;/

25、从文件stu.ser中读出学生信息try FileInputStream fi = newFileInputStream(stu.ser); ObjectInputStream si = new ObjectInputStream(fi); for (int i=0; iai aj+1。l第二步,将ai插入到aj之后。在插入之前,需要先保存ai的值,之后将aj+1、an-1依次向后移一位(后移操作也可在第一步的查找过程中进行)7.1.2 对数组元素进行排序对数组元素进行排序(续续) 直接插入排序直接插入排序对象数组33l在在StudentClass中增加直接插入排序方法中增加直接插入排序方法i

26、nsertSort,代码如下代码如下public void insertSort()Student temp;for (int i=1; i-1 & pare(studentsj)0)studentsj+1 = studentsj;j-; studentsj+1 = temp;7.1.2 对数组元素进行排序对数组元素进行排序(续续) 例例7_3对象数组347.1.3 在已排序的数组中查找在已排序的数组中查找l一批一批Integer类型的数据已按升序排列好,类型的数据已按升序排列好,a1a2an ,存储在数组,存储在数组a0、a1、 、an-1中,现在要对该数组进行查找,看给定的数据中,

27、现在要对该数组进行查找,看给定的数据x是是否在此数组中否在此数组中 顺序查找方法 按从左向右的顺序查找,当x小于ai时就应该停止查找public int seqSearch(int x) for (int i = 0; (i = Value(); i+) if (Value() = x) return i; return -1; 二分查找。在0到n-1中间选一个正整数k,用k把原来的有序序列分为三个有序子序列:la0,a1,ak-1laklak+1,ak+2,an-1 对象数组35l具有排序数组的类具有排序数组的类SortedIntArray search方法运用二分查

28、找算法:在给定的数组范围内查找某一元素,如果存在,返回元素所在的下标位置,如果不存在,则返回元素应该在的位置(如果要将此元素插入到数组中,且保持数组仍然有序的位置) 将此功能与插入功能相结合,可实现对数组元素进行排序public class SortedIntArray private int capacity;private Integer rep;private int size;public SortedIntArray(int n) capacity = n; rep = new Integercapacity; 7.1.3 在已排序的数组中查找在已排序的数组中查找(续续) 例例7_4

29、对象数组36public SortedIntArray( ) this(100); private int search(int i, int lower, int upper) int index = lower; if (upper = lower) int middle = (upper + lower) / 2; int current = Value( ); if (current = i) index = middle; else if (current index; -j) repj = repj - 1; repindex = new Integer(

30、i);+size;return this;public SortedIntArray remove(int i)int index = search(i);if (Value( ) = i) -size; for (int j = index; j size; +j) repj = repj + 1;return this;7.1.3 在已排序的数组中查找在已排序的数组中查找(续续) 例例7_4对象数组38public String toString( ) String toReturn = ; for (int i = 0; i size; +i) toReturn

31、+= repi.toString( ) + , ; return toReturn;static public void main(String args) SortedIntArray anArray = new SortedIntArray( ); anArray.insert(4).insert(9).insert(7).insert(1).insert(3). insert(2).insert(8).insert(7); System.out.println(anArray); anArray.remove(1).remove(8).remove(7).remove(3); Syste

32、m.out.println(anArray);7.1.3 在已排序的数组中查找在已排序的数组中查找(续续) 例例7_4对象数组39l运行结果运行结果1, 2, 3, 4, 7, 7, 8, 9,2, 4, 7, 9,7.1.3 在已排序的数组中查找在已排序的数组中查找(续续) 例例7_4运行结果运行结果对象数组407.3 集合集合l数组的优点数组的优点 是Java提供的随机访问对象序列的最有效方法 是一个简单的线性序列,访问元素的速度较快l数组的缺点数组的缺点 大小自创建以后就固定了,在其整个生存期内其大小不可改变 数组元素只能是同一类型l集合集合 可动态改变其大小 可在序列中存储不同类型的数

33、据41l集合集合 把具有相同性质的一类东西,汇聚成一个整体 在Java2中有很多与集合有关的接口及类 它们被组织在以Collection及Map接口为根的层次结构中,称为集合框架 在Java2之前,在Java 1.0/1.1中,没有完整的集合框架。只有一些简单的可以自扩展的容器类lVector lHashtable7.3 集合集合(续续)集 合427.3.1 Java集合框架集合框架l集合框架集合框架(Java Collections Framework) 为表示和操作集合而规定的一种统一的标准的体系结构 提供了一些现成的数据结构可供使用,程序员可以利用集合框架快速编写代码,并获得优良性能 包

34、含三大块内容l对外的接口:表示集合的抽象数据类型,使集合的操作与表示分开l接口的实现:指实现集合接口的Java类,是可重用的数据结构l对集合运算的算法:是指执行运算的方法,例如在集合上进行查找和排序集 合43l集合框架接口集合框架接口 声明了对各种集合类型执行的一般操作 包括Collection、Set、List、SortedSet、Map、SortedMap 基本结构如图7.3.1 Java集合框架集合框架(续续) 对外的接口对外的接口集 合44l类层次如图,包括类层次如图,包括4个接口、个接口、4个抽象类个抽象类及及6个具体类个具体类7.3.1 Java集合框架集合框架(续续) Colle

35、ction接口接口aaaCollectionAbstractCollectionVectorArrayListStackListSetSortedSetAbstractSetAbstractListAbstractSequentialListHashSetTreeSetLinkedList集 合45lCollection接口接口 声明了一组操作成批对象的抽象方法:查询方法、修改方法 查询方法lint size() 返回集合对象中包含的元素个数lboolean isEmpty() 判断集合对象中是否还包含元素,如果没有任何元素,则返回truelboolean contains(Object ob

36、j) 判断对象是否在集合中lboolean containsAll(Collection c) 判断方法的接收者对象是否包含集合中的所有元素7.3.1 Java集合框架集合框架(续续) Collection接口接口集 合46 修改方法包括lboolean add(Object obj) 向集合中增加对象lboolean addAll(Collection c) 将参数集合中的所有元素增加到接收者集合中lboolean remove(Object obj) 从集合中删除对象lboolean removeAll(Collection c) -将参数集合中的所有元素从接收者集合中删除lboolean

37、 retainAll(Collection c) 在接收者集合中保留参数集合中的所有元素,其它元素都删除lvoid clear() 删除集合中的所有元素7.3.1 Java集合框架集合框架(续续) Collection接口接口集 合47lSet接口接口 扩展了Collection 禁止重复的元素,是数学中“集合”的抽象 对equals和hashCode操作有了更强的约定,如果两个Set对象包含同样的元素,二者便是相等的 实现它的两个主要类是哈希集合(HashSet)及树集合(TreeSet)lSortedSet接口接口 一种特殊的Set 其中的元素是升序排列的,还增加了与次序相关的操作 通常用

38、于存放词汇表这样的内容7.3.1 Java集合框架集合框架(续续)Set、SortedSet接口接口集 合48lList接口接口 扩展了Collection 可包含重复元素 元素是有顺序的,每个元素都有一个index值(从0开始)标明元素在列表中的位置 实现它的四个主要类是lVectorlArrayList:一种类似数组的形式进行存储,因此它的随机访问速度极快lLinkedList:内部实现是链表,适合于在链表中间需要频繁进行插入和删除操作l栈Stack7.3.1 Java集合框架集合框架(续续)List接口接口集 合49lMap接口接口 不是Collection接口的继承 用于维护键/值对(

39、key/value pairs) 描述了从不重复的键到值的映射,是一个从关键字到值的映射对象 其中不能有重复的关键字,每个关键字最多能够映射到一个值lSortedMap接口接口 一种特殊的Map,其中的关键字是升序排列的 与SortedSet对等的Map,通常用于词典和电话目录等 7.3.1 Java集合框架集合框架(续续) Map、SortedMap接口接口集 合50l接口的实现 Collection没有直接的实现,只是作为其他集合接口的最小公分母 除Collection 以外,其余五个接口都有实现 主要的实现有lSetHashSetlSortedSetTreeSetlListVector

40、/ ArrayList / LinkedListlMapHashMaplSortedMapTreeMap7.3.1 Java集合框架集合框架(续续) 接口的实现接口的实现集 合51l对集合运算的算法对集合运算的算法 大多数算法都是用于操作List对象 有两个(min和max)可用于任意集合对象l排序算法排序算法sort 对List重新排序,使其中的元素按照某种次序关系升序排列 有两种形式l简单形式只是将元素按照自然次序排列l第二种形式需要一个附加的Comparator对象作为参数,用于规定比较规则,可用于实现反序或特殊次序排序7.3.1 Java集合框架集合框架(续续) 对集合运算的算法对集合

41、运算的算法集 合52l洗牌算法洗牌算法shuffle 其作用与排序算法恰好相反,它打乱List中的任何次序。也就是说以随机方式重排元素,任何次序出现的几率都是相等的 在实现偶然性游戏的时候,这个算法很有用,例如洗牌l常规数据处理算法常规数据处理算法 reverse::将一个List中的元素反向排列 fill:用指定的值覆写List中的每一个元素,这个操作在重新初始化List时有用 copy::接受两个参数,目标List和源List,将源中的元素复制到目标,覆写其中的内容。目标List必须至少与源一样长,如果更长,则多余的部分内容不受影响7.3.1 Java集合框架集合框架(续续) 对集合运算的

42、算法对集合运算的算法集 合53l查找算法查找算法binarySearch 使用二分法在一个有序的List中查找指定元素 有两种形式l第一种形式假定List是按照自然顺序升序排列的l第二种形式需要增加一个Comparator对象,表示比较规则,并假定List是按照这种规则排序的。l寻找最值寻找最值用于任何集合对象用于任何集合对象 min和max算法返回指定集合中的最小值和最大值 这两个算法分别都有两种形式l简单形式按照元素的自然顺序返回最值l另一种形式需要附加一个Comparator对象作为参数,并按照Comparator对象指定的比较规则返回最值7.3.1 Java集合框架集合框架(续续) 对

43、集合运算的算法对集合运算的算法集 合54lArrays类 Java集合框架提供了一套专门用于操作数组的实用方法,它们作为静态方法存在该类中 还包括可以将数组视为列表(List)的静态工厂 常用方法lfill (type a, type val):给数组填充,就是简单地把一个数组全部或者某段数据填成一个特殊的值lequals (type a, type b):实现两个数组的比较,相等时返回truelsort (type a): 对数组排序lbinarySearch ( ): 对数组元素进行二分法查找lArrays.asList (Object a): 实现数组到ArrayList的转换7.3.1

44、 Java集合框架集合框架(续续) 数组实用方法数组实用方法集 合55l数组的填充和复制数组的填充和复制import java.util.*;public class CopyingArrays public static void main(String args) int i = new int25; int j = new int25; Arrays.fill(i, 47); Arrays.fill(j, 99); System.arraycopy(i, 0, j, 0, i.length); int k = new int10; Arrays.fill(k, 103); System.

45、arraycopy(i, 0, k, 0, k.length); Arrays.fill(k, 103); System.arraycopy(k, 0, i, 0, k.length); Integer u = new Integer10; Integer v = new Integer5; Arrays.fill(u, new Integer(47); Arrays.fill(v, new Integer(99); System.arraycopy(v, 0, u, u.length/2, v.length); JDK1.5,可使用Arrays.toString函数方便的显示出数组的内容7.

46、3.1 Java集合框架集合框架(续续) 数组实用方法数组实用方法集 合56l数组的比较数组的比较import java.util.*;public class ComparingArrays public static void main(String args) int a1 = new int10; int a2 = new int10; Arrays.fill(a1, 47); Arrays.fill(a2, 47); System.out.println(Arrays.equals(a1, a2); /true a23 = 11; System.out.println(Arrays.

47、equals(a1, a2); /false String s1 = new String5; Arrays.fill(s1, Hi); String s2 = Hi, Hi, Hi, Hi, Hi; System.out.println(Arrays.equals(s1, s2);/true 7.3.1 Java集合框架集合框架(续续) 数组实用方法数组实用方法集 合577.3.2 向量向量(Vector,ArrayList)lVector/ArrayList 实现了Collection接口的具体类 能够存储任意对象,但通常情况下,这些不同类型的对象都具有相同的父类或接口 不能存储基本类型(

48、primitive)的数据,除非将这些数据包裹在包裹类中 其容量能够根据空间需要自动扩充 增加元素方法的效率较高,除非空间已满,在这种情况下,在增加之前需要先扩充容量lVector方法是同步的,线程安全方法是同步的,线程安全lArrayList方法是非同步的,效率较高方法是非同步的,效率较高集 合58lVector类的构造方法类的构造方法 Vector myVector = new Vector(); /初始容量为10 Vector myVector = new Vector(int cap); Vector myVector = new Vector(Collection col);l以参数

49、col中的元素进行初始化l也可用数组元素生成,但需先将数组转换成List对象,如String num = one, two, three, four, five; Vector aVector = new Vector(java.util.Arrays.asList(num);lArrayList的构造方法与的构造方法与Vector类似类似 ArrayList myList = new ArrayList(); ArrayList myList = new ArrayList(int cap); ArrayList myList = new ArrayList(Collection col);

50、7.3.2 向量向量(Vector,ArrayList)(续续) 构造方法构造方法集 合59l本节所有常用方法如无特殊说明,为本节所有常用方法如无特殊说明,为Vector,ArrayList类共有之方法类共有之方法lvoid add(Object obj) 添加一个对象,如添加一个对象,如Vector teamList = new Vector(); teamList.add(Zhang Wei); teamList.add(Li Hong); lboolean addAll(Collection col) 添加整个集添加整个集合,如果接收者对象的结果有变化,则返回合,如果接收者对象的结果有变

51、化,则返回true,如如Vector teamList = new Vector(); teamList.add(Zhang Wei); teamList.add(Li Hong); Vector yourList = new Vector(); yourList.addAll(teamList); 7.3.2 向量向量(Vector,ArrayList)(续续) 常用方法常用方法1集 合60lint size() 返回元素的个数。返回元素的个数。lboolean isEmpty() 如果不含元素,则返回如果不含元素,则返回truelObject get(int pos) 返回指定位置的元素,

52、如返回指定位置的元素,如Vector teamList = new Vector(); teamList.add(Zhang Wei); teamList.add(Li Hong); teamList.add(Yu Hongshu); teamList.get(1); / 返回 Li Hong teamList.get(3); / 产生例外 ArrayIndexOutOfBoundsException集 合7.3.2 向量向量(Vector,ArrayList)(续续) 常用方法常用方法261lvoid set(int pos, Object obj) 用参数对象替用参数对象替换指定位置的对象

53、,如换指定位置的对象,如Vector teamList = new Vector(); teamList.add(Zhang Wei); teamList.add(Li Hong); teamList.add(Yu Hongshu); teamList.set(2, Liu Na); System.out.println(teamList); / 显示Zhang Wei, Li Hong, Liu NateamList.set(3,Ma Li); / 产生例外ArrayIndexOutOfBoundsException集 合7.3.2 向量向量(Vector,ArrayList)(续续) 常用

54、方法常用方法362lboolean remove(Object obj) 去除给定对象的去除给定对象的第一次出现,如果找到了对象,则返回第一次出现,如果找到了对象,则返回true。去除。去除一个对象后,其后面的所有对象都依次向前移动。一个对象后,其后面的所有对象都依次向前移动。如如Vector teamList = new Vector(); teamList.add(Zhang Wei); teamList.add(Li Hong); teamList.add(Yu Hongshu); teamList.remove(Li Hong);teamList.remove(Wang Hong);/

55、不做任何事,也不出现错误System.out.println(teamList); / 显示Zhang Wei,Yu Hongshu集 合7.3.2 向量向量(Vector,ArrayList)(续续) 常用方法常用方法463lObject remove(int pos) 去除给定位置的元素,去除给定位置的元素,并返回被去除的对象。如并返回被去除的对象。如Vector teamList = new Vector(); teamList.add(Zhang Wei); teamList.add(Li Hong); teamList.add(Yu Hongshu);teamList.remove(

56、0); /去除Zhang WeiteamList.remove(0); /去除 Li HongSystem.out.println(teamList); / 显示Yu HongshuteamList.remove(1); /产生例外 ArrayIndexOutOfBoundsException集 合7.3.2 向量向量(Vector,ArrayList)(续续) 常用方法常用方法564lboolean removeAll(Collection col) 从接收者对象中从接收者对象中去除所有在参数对象中出现的元素,如果接收者对象的结果去除所有在参数对象中出现的元素,如果接收者对象的结果有变化,则

57、返回有变化,则返回true。如。如Vector teamList = new Vector(); teamList.add(Zhang Wei); teamList.add(Li Hong); teamList.add(Yu Hongshu);Vector yourList = new Vector(); yourList.add(Yu Hongshu); yourList.add(He Li); yourList.add(Zhang Wei); teamList.removeAll(yourList); System.out.println(teamList); / 显示Li Hong集 合

58、7.3.2 向量向量(Vector,ArrayList)(续续) 常用方法常用方法665lvoid clear() 去除所有的元素去除所有的元素lboolean contains(Object obj) 返回是否包含指定的对返回是否包含指定的对象,如果包含则返回象,如果包含则返回true;否则,返回;否则,返回falselboolean containsAll(Collection col) 返回是否包含参返回是否包含参数数col中的所有对象中的所有对象lint indexOf(Object obj) 返回给定对象在返回给定对象在Vector /ArrayList中第一次出现的位置,如不存在,

59、则返回中第一次出现的位置,如不存在,则返回-1。如。如Vector teamList = new Vector(); teamList.add(Zhang Wei); teamList.add(Li Hong); teamList.indexOf(Li Hong); / 返回1。teamList.indexOf(Zhang Li); / 返回-1。集 合7.3.2 向量向量(Vector,ArrayList)(续续) 常用方法常用方法766lEnumeration elements() 返回包含返回包含Vector中所有元素中所有元素的的Enumeration类对象。类对象。该方法只能应用于该

60、方法只能应用于Vector对象,不对象,不能应用于能应用于ArrayList对象。对象。如如Vector teamList = new Vector(); teamList.add(Zhang Wei); teamList.add(Li Hong); teamList.add(Yu Hongshu);teamList.elements(); / 返回Enumeration类对象。lIterator iterator() 返回包含返回包含Vector/ArrayList中所有元中所有元素的素的Iterator类对象类对象集 合7.3.2 向量向量(Vector,ArrayList)(续续) 常用方法常用

温馨提示

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

评论

0/150

提交评论