资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第六章 基础类库和工具类库,Java,集合类,集合类概述,集合类作用、特点,旧的集合类介绍,Vector,、,Hashtable,、,Stack,新的集合类介绍,Collection,、,Set,、,Map,、,List,1,集合类概述,集合类的作用:,Java,的集合类提供了一些基本数据结构的支持。,例如,Vector,、,Hashtable,、,Stack,等。,集合类的使用:,Java,的集合类包含在,java.util,包中。,import,java.util,.*;,2,集合类概述,集合类特点一:,只容纳对象,。这一点和数组不同,数组可以容纳,基本数据类型数据和对象。,如果集合类中想使用基本数据类型,又想利用,集合类的灵活性,可以把基本数据类型数据封装,成该数据类型的对象,然后放入集合中处理。,3,集合类概述,集合类特点二:,集合类容纳的对象都是,Object,类的实例,一旦把,一个对象置入集合类中,它的类信息将丢失,这样设,计的目的是为了集合类的通用性。,因为,Object,类是所有类的祖先,所以可以在这些,集合中存放任何类的对象而不受限制,但是切记在使,用集合成员之前必须对它重新造型。,4,集合类概述,下面根据,JDK,版本分两部分介绍,Java,的,集合类。,第一部分:,JDK1.1,版本中的集合类。,第二部分:,JDK1.2,以后版本中的集合类。,5,数组,数组,基本数据类型数组,对象数组,举例说明数组的定义、使用。,6,class Honeybee,int,value;,Honeybee(int,v),value=v;,public String,toString,(),return new,Integer(value).toString,();,public class,ArraySize,public static void,main(String,args,),Honeybee a;,/*,System.out.println(a.length,);,产生编译错误,因为,a,没有定义大小,*,/,Honeybee b=new Honeybee5;,System.out.println(b.length,);,/,输出,5,for(int,i=0;i,b.length,;i+),System.out.println(bi,);,/,输出,5,个,null,例,1,:演示对象数组用法:,7,Honeybee c=new Honeybee4;,for(int,i=0;i,c.length,;i+),ci,=new,Honeybee(i,);,System.out.println(c.length,);,/,输出,4,Honeybee d=new Honeybee(100),new Honeybee(200),new Honeybee(300);,System.out.println(d.length,);,/,输出,3,a=d;/,数组之间赋值,System.out.println(a.length,);,/,输出,3,for(int,i=0;i,a.length,;i+),System.out.println(ai,);,/,输出,100,200,300,a=new Honeybee new Honeybee(1),new Honeybee(2);,System.out.println(a.length,);,/,输出,2,例,1,:演示对象数组用法:,8,public class ArraySize2,public static void,main(String,args,),int,a;,/*,System.out.println(a.length,);,产生编译错误,因为,a,没有定义大小,*,/,int,b=new int5;,System.out.println(b.length,);,/,输出,5,for(int,i=0;i,b.length,;i+),System.out.println(bi,);,/,输出,5,个,0,int,c=new int4;,for(int,i=0;i,c.length,;i+),ci,=i;,System.out.println(c.length,);,/,输出,4,例,2,:演示基本类型数组用法,:,9,int,d=100,200,300;,System.out.println(d.length,);,/,输出,3,a=d;/,数组之间赋值,System.out.println(a.length,);,/,输出,3,for(int,i=0;i,a.length,;i+),System.out.println(ai,);,/,输出,100,,,200,,,300,a=new,int,1,2;,System.out.println(a.length,);,/,输出,2,例,2,:演示基本类型数组用法,:,10,旧的集合类,Vector,Stack,Hashtable,11,Vector,类,Vector,类实现了长度可变的数组。,Vector,中只能存放对象。,Vector,的元素通过下标进行访问。,Vector,类关键属性:,capacity,表示集合最多能容纳的元素个数。,capacityIncrement,表示每次增加多少容量。,size,表示集合当前元素个数。,Vector v=new Vector(100),12,Vector,类,Vector,类关键方法:,void,addElement(Object,obj,),void,add(int,index,Object element),Object,elementAt(int,index),void,insertElementAt(Object,obj,int,index),13,Vector,类举例,1,import,java.util.Vector,;,class Cat,private,int,catNumber,;,Cat(int,i)catNumber,=i;,void,print()System.out.println(Cat,#+,catNumber,);,class Dog,private,int,dogNumber,;,Dog(int,i)dogNumber,=i;,void,print()System.out.println(Dog,#+,dogNumber,);,转下页,14,Vector,类举例,1,接上页:,public class,CatsAndDogs,public static void,main(String,args,),Vector cats=new Vector();,for(int,i=0;i7;i+),cats.addElement(new,Cat(i,);,cats.addElement(new,Dog(7);,for(int,i=0;i,cats.size,();i+),(,(,Cat),cats.elementAt(i),),.print,();,Object,对象,Cat,对象,15,Vector,类举例,2,修改,Vector,例,1,,用,Enumeration,。,import,java.util.Vector,;,import,java.util.Enumeration,;,class Cat,private,int,catNumber,;,Cat(int,i)catNumber,=i;,void,print()System.out.println(Cat,#+,catNumber,);,class Dog,private,int,dogNumber,;,Dog(int,i)dogNumber,=i;,void,print()System.out.println(Dog,#+,dogNumber,);,转下页,16,Vector,类举例,2,接上页:,public class,CatsAndDogs,public static void,main(String,args,),Vector cats=new Vector();,for(int,i=0;i7;i+),cats.addElement(new,Cat(i,);,cats.addElement(new,Dog(7);,/,for(int,i=0;i,cats.size,();i+),/(,Cat)cats.elementAt(i).print,();,Enumeration e=,cats.elements,();,while(e.hasMoreElements,(),(Cat),e.nextElement().print,();,17,Stack,类,Stack,类是,Vector,的子类。,Stack,类描述堆栈数据结构,即,LIFO,。,Stack,类的关键方法:,public void,push(Object,item),public Object pop(),public Object peek(),public,boolean,empty(),演示,/,把项压入栈顶,移除栈顶对象并作为此函数的值返回该对象,/,查看栈顶对象而不移除它,/,测试堆栈是否为空,18,Stack,类举例,import,java.util,.*;,public class Stacks,static String months=1,2,3,4;,public static void,main(String,args,),Stack,stk,=new Stack();,for(int,i=0;i,months.length,;i+),stk.,push,(monthsi,);,System.out.println(stk,);,System.out.println(element,2=+stk.,elementAt,(2);,while(!stk.,empty,(),System.out.println(stk.,pop,();,19,Hashtable,类,Hashtable,通过键来查找元素。,Hashtable,用一个特殊的值来确定键,名为,hashcode,(散列码)。所有对象都有一个,散列码,可以通过,Object,类的,hashCode,(),方法获得。,20,Hashtable,举例,该例子用来检验,Math.random,(),方法的随,机性。在理想情况下,它应该产生一系列完,美的随机分布的数字。为了验证这一点,我,们需要生成数量众多的随机数字,然后计算,落在不同范围内的数字量。该程序生成,10000,个随机数,看它们在,0,20,之间的,分布如何。,返回带正号的,double,值,大于或等于,0.0,,小于,1.0,。,21,Hashtable,举例,import,java.util,.*;,class Counter,int,i=1;,public String,toString,(),return,Integer.toString(i,);,public class Statistics,public static void,main(String,args,),Hashtable,ht=new,Hashtable,();,for(int,i=0;i10000;i+),Integer r=new,Integer(int)(Math.random,()*20);,if(ht.,containsKey,(r,),(,Counter)ht.,get,(r).i,+;,else,ht.,put,(r,new Counter();,System.out.println(ht,);,22,新集合类,Java1.2,开始又一个庞大的集合体系,它用来完成各种集合操作。,Collection,L
展开阅读全文