资源描述:
《java第七章容器(内容非图片,可直接复制操作).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、六节:容器1.容器API★Jdk所提供的容器位于java.util包内★容器API的类图结构如下图所示:右边:一对一对往里装Map:定义存储“键(key)---值(value)映射对”的方法左边:一个一个往里装Collection:容器(分了两子接口)1.set:无顺序,不重复(如数学集合)无下标,只能用Iterator逐一遍历2.list:有顺序,可重复(两数eauals即算重复)按先来后到的顺序排序,有下标★collection接口中所定义的方法:add():方法添加remove():删去方法(重要)importjava.util
2、.*;publicclassuniltset{publicstaticvoidmain(String[]args){Collectionc=newArrayList();//c只能用collection类的方法c.add("hello");c.add(newdate1(2012,12,29));//此包Stringtest2里已有date1类c.add(newInteger(100));//c.add(inti=100);是错的,因为int是存放在栈内存里的,会随时清空,只能装对象System.out.println(c.size()
3、);System.out.println(c);c.remove("hello");//hello被去掉,String对象在datesegment内存里一样字符为同一对象(数据内存里的节约办法)c.remove(newInteger(100));//100被去掉,Integer类重写了equals方法,只要值相同,对象视为相同System.out.println(c.remove(newdate1(2012,12,29)));//false:20121229未被去掉,不是同一对象System.out.println(c);}}结果:3
4、[hello,20121229,100](collection的对象打印时的格式)false[20121229]为了使两个对象也能相等,现在重写date1里的equals方法,注意重写equals方法应要重写hashcode方法(当类的对象当做索引时会用hashcode方法)classdate1{Stringyear,month,day;date1(Stringy,Stringm,Stringday){year=y;month=m;this.day=day;}publicStringtoString(){returnyear+""+m
5、onth+""+day;}//此处开始重写date1类equals方法,供容器章目使用publicbooleanequals(Objectobj){if(objinstanceofdate1){date1d=(date1)obj;return(year.equals(d.year))&&(month==d.month)&&(day==d.day);}这里写equals方法必须是对象才能写,String是类,这里如果写int就错了,int是基本类型,没有方法returnsuper.equals(obj);(如果obj不是date1类的,
6、就返回父类方法)}publicinthashCode(){returnyear.hashCode();//引索的date1对象这里}}则上个函数结果:[]20121229去掉了2.Iterator接口(游标器,去遍历每个元素)所有实现了Collection接口的容器类都有一个Iterator方法用以返回一个实现了Iterator接口的对象Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作Iterator接口定义了如下方法:booleanhasNext(); 判断游标右边是否有元素Objectnext();返回游标右边
7、的元素并将游标游到下一个位置Voidremove();删除游标左面的元素,在执行完next之后该操作只能执行一次importjava.util.*;classname{StringfirstName,lastName;name(Stringf,Stringl){firstName=f;lastName=l;}publicStringtoString(){//重写toStringreturnfirstName+","+lastName;}}publicclassIteratorTest{publicstaticvoidmain(Stri
8、ng[]args){Collectionc=newHashSet();c.add(newname("f1","l1"));c.add(newname("f2","l2"));c.add(newname("f3","l3"