资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,2009,年,浙江工业大学软件学院,Java,程序设计视频教程,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Java,程序设计视频教程,本讲主题:包装类与集合类,包装类,包装类将根本数据类型包装成引用数据类型。,每个包装类对象都封装了根本类型的一个值。,根本数据类型 对应的包装类,booleanBoolean,byteByte,charCharacter,shortShort,int Integer,longLong,floatFloat,doubleDouble,2,包装类,包装类中包含了很多有用的方法和常量。,创立相应的包装类对象(Xxx表示包装类的名称),Xxx(a value),Xxx(String s),类型的最大值与最小值,MIN_VALUE,MAX_VALUE,将字符串转换成该类型对应的根本数据类型,public static xxx parseXxx(String s),其中Xxx表示根本数据类型名称,将该类型的对象转换成字符串,public String toString(),public static String toString(xxx anxxxValue),public static String toString(int i,int radix)/同时实现数制转换,3,包装类,例:利用包装类,Integer,的,parseInt,方法,将字符串转换为整数。,public static int parseInt(String,s)throws NumberFormatException,请大家回去自己仔细研究各包装类及其方法。,4,class TestInteger,public static void main(String args),int i1=,Integer.parseInt(args0);,int i2=Integer.parseInt(args1);,System.out.println(i1+i2);,5,集合类,一个集合类对象用于表示了一组对象的集合,是对象的容器。,6,Set,Set不能包含重复的元素。,Set 接口定义:,public interface Set,/根本方法,int size();,boolean isEmpty();,boolean contains(Object element);,boolean add(Object element);,boolean remove(Object element);,Iterator iterator();,7,List,List,是有序的集合,元素可以重复。,List,接口定义,:,public interface List extends Collection,Object get(int index);,Object set(int index,Object element);/Optional,void add(int index,Object element);/Optional,Object remove(int index);/Optional,abstract boolean addAll(int index,Collection c);/Optional,/Search,int indexOf(Object o);,int lastIndexOf(Object o);,List,的实现,:Vector,,,ArrayList,LinkedList,8,Vector,与,ArrayList,Vector与ArrayList功能类似,但Vector是多线程平安的,具有多线程同步机制,能够保证多个线程对同一个Vector对象操作时数据的正确性。而ArrayList则没有处理多线程同步问题。,本讲介绍Vector,9,向量,Vector,Vector,是一个类,功能类似数组,但存在以下区别,元素的个数可变,元素的类型必须是引用类型,Vector,对象中可以存放的元素个数称为,向量的容量,(capacity),Vector,对象中实际元素的个数称为,向量的长度,(size),当长度超出容量时,向量对象的容量会自动扩大,一次扩大一个,容量增量;,容量增量为,0,时,容量扩大一倍。,Vector,类在,java.util,包中,使用时要引入,(,在类前面用,import java.util.Vector,;,),或用完整的名称。,10,向量变量的声明,声明格式:,Vector,变量名,例:,声明一个元素类型为字符串的向量变量,vs,Vector vs;,下面的声明是错误的,因为,int,不是引用类型。,Vector vi;,下面的声明被允许,但会出现编译警告,Vector vo;,11,向量的构造方法,创立初始容量为10,默认增量为0的向量对象:,new Vector(),创立初始容量为initialCapacity,默认增量为0的向量对象:,new Vector(int initialCapacity),创立初始容量为initialCapacity,默认增量为capacityInc的向量对象:,new Vector(int initialCapacity,int capacityInc),构造方法不指定元素类型会出现编译警告,12,声明向量变量并实例化向量对象的例子,变量,vs,引用一个元素类型为字符串的向量,其初始容量为,10,,默认增量为,0,:,Vector vs=new Vector();,变量,vo,引用一个没有指定元素类型的向量,其初始容量为,16,,默认增量为,8,:,Vector vo=new Vector(16,8);,13,对向量的主要操作,增加元素,将指定元素追加到此向量的末尾。,boolean add(E o),插入元素,在此向量的指定位置插入指定的元素,和数组一样,index,的取值从,0,开始。,void add(int index,E element),修改元素,用指定的元素替换此向量中指定位置,index,处的元素。,E set(int index,E element),14,对向量的主要操作(续),删除元素,移除此向量中指定位置的元素。,E remove(int index),移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变。,boolean remove(Object o),从此向量中移除所有元素。,void clear(),15,对向量的主要操作(续),查询,返回向量中指定位置的元素。,E get(int index),判断指定的对象是否为此向量中的某个元素。,boolean contains(Object elem),返回此向量的第一个元素(位于索引,0,处的项)。,E firstElement(),返回此向量的最后一个元素。,E lastElement(),16,对向量的主要操作(续),查询元素的位置索引,返回给定参数的第一个匹配项的索引,使用,equals,方法测试相等性。没有匹配项则返回,-1,。,int indexOf(Object elem),返回给定参数的第一个匹配项的索引,从,index,处开始匹配,并使用,equals,方法测试其相等性。没有匹配项则返回,-1,int indexOf(Object elem,int index),返回指定的对象在此向量中最后一个匹配项的索引。没有匹配项则返回,-1,。,int lastIndexOf(Object elem),从后往前搜索指定的对象并返回其索引。从指定的索引处开始搜索。没有匹配项则返回,-1,。,int lastIndexOf(Object elem,int index),17,对向量的主要操作(续),查询向量的相关信息,返回此向量的当前容量。,int capacity(),返回此向量中的元素个数。,int size(),测试此向量是否不包含元素。,boolean isEmpty(),18,对向量的主要操作(续),改变向量的长度或容量,设置此向量的长度。如果新长度大于老长度则尾部添加,null;,如果新长度小于老长度则尾部元素删除,;,void setSize(int newSize),对此向量的容量进行微调,使其等于向量的当前大小。,void trimToSize(),增加此向量的容量(如有必要),以确保其至少能够保存最小容量参数指定的元素个数。,void ensureCapacity(int minCapacity),19,向量使用例如,import java.util.Vector;,class TestVector,public static void main(String args),Vector vs=new Vector(16,8);,vs.add(1);,vs.add(2);,vs.add(1,3);,System.out.println(vs.toString();,if(vs.contains(3),System.out.println(3is an element of vs);,vs.remove(3);,System.out.println(vs.toString();,20,哈希表,/,散列表(,Hashtable),将数据按“关键字(key)和“值(value)配对存放,通过key可以快速找到value。其原理是建立key到value的映射。,Java中实现哈希表的有三个类:Hashtable,HashMap,WeakHashMap,他们的区别有三个,详见教材P149。,上述三个类在java.util包中。,21,哈希表变量的声明,声明格式,Hashtable,变量名,或者,Hashtable,变量名,注意:,哈希表的关键字和值都必须是引用类型,第二种声明格式会导致编译警告,22,哈希表的构造方法,用缺省的容量11和装填因子0.75f构造一个新的空哈希表。,Hashtable,(),用指定的初始的容量和缺省的装填因子构造一个新的空哈希表。,Hashtable,(int),用指定的初始的容量和指定的装填因子构造一个新的空哈希表。,Hashtable,(int,float),注意:不指明类型也可以,但会导致出现编译警告,23,声明哈希表变量并实例化哈希表对象,按默认的容量和装填因子创立一个哈希表对象,其关键字是String类型,值是Integer类型:,Hashtable ht=new Hashtable();,创立一个初始容量为20,装填因子为0.8f的哈希表对象,不指定关键字和值的类型。,Hashtable ht=new Hashtable(20,0.8f);,24,哈希表常用操作,添加元素,在该散列表中映射指定的,kObject,键到指定的,vObject,值。,V put(kObject,vObject),查找元素,返回指定的键,kObject,在这个散列表中的映射值。,V get(kObject),删除元素,从该散列表中删除键值为,kObject,的元素。,V remove(kObject),清空该散列表使它不包含元素。,void clear(),25,哈希表常用操作(续),检测,检测指定的对象是否是该散列表中的一个键。,boolean,containsKey(Object,key,),检测在该散列表中某些键是否映射到指定的值。,boolean contains(Object value),返回该散列表中的元素个数。,int size(),26,哈希表使用例如,import java.util.Hashtable;,class TestHashtable,public static void main(String ar
展开阅读全文