Iterator iter = set.iterator(); while(iter.hasNext()){ Object key = iter.next(); Object value = map.get(key);
System.out.println(key + \ + value); }
//输出所有教JSP的老师 iter = set.iterator(); while(iter.hasNext()){ Object key = iter.next(); Object value = map.get(key); if (value.equals(\)){ System.out.println(key); } } } }
其运行结果截图如下:
5【选做】运行并分析程序运行结果。
import java.util.*; public class Question10_3 { public void run() {
List
v.add(0, \v.addElement(\ v.add(\ v.add(1,\
v.addElement(\
System.out.println(v); String name = (String)v.get(3); System.out.println(name); } }
问题:
(1) 程序出现的编译错误是什么?什么原因? 答:其错误原因是将强加类型转换添加至“v”,修改方法是将List
(2)add()方法和addElement()方法有何不同? 答:Vector类的add()与 addElement()方法都是将指定元素追加到向量的末尾。并且后者是将大小增加一,两者效果相同。
不同是一个是实现Collection接口的方法,并且返回一个boolean值 //add方法,一个是容器自己的方法//addElement(),add()是sun的推荐方法,sun建议不要使用addElement()
连Vector都不推荐用了,boolean add(E o)是将指定元素追加到此向量的末尾。void add(int index, E element) 是在此向量的指定位置插入指定的元素。addElement(E obj) 是将指定的组件添加到此向量的末尾,将其大小增加 1。
(3)对于get()方法返回的元素是否需要强制类型转换?
答:.get() 通过索引进行元素访问注:该方法返回的是一个
OBJECT类型的元素,
需要进行强制类型转换为该元素原始类型
6【选做】. 运行程序,回答下面问题。
package experiment10; import java.util.*; public class Question10_4 { public void run() {
Set
System.out.println(i.next() + \ if(b) { i.remove(); b = false; }
}
System.out.println(); i = s.iterator(); while (i.hasNext())
System.out.println(i.next() + \ System.out.println(); } }
问题:
(1)程序的运行结果是什么? 答:该程序的执行结果如下所示:
2nd 1st 3rd 4th first
(2) remove方法删除掉的对象是“first”吗,如果不是,那为什么?
答:remove():从集合中删除上一个有next()方法返回的元素。remove() 方法会在删除当前迭代对象的同时维护索引的一致性。
(3) 多次运行程序,得到结果都一样吗?为什么? 答:一样.
7【选做】编写应用程序,按照图示的输出结果完成程序:在main方法中创建ArrayList对象list,并添加15个Integer对象后输出;对列表中的元素随机排序后输出;对列表中的元素降序排序后输出;对列表中的元素升序排序后输出;查找列表中是否由元素12和-9,并分别输出查找结果。
根据结果,其程序代码设计如下:
package zi;
import java.util.*; publicclass Ex7_7{
publicstaticvoid main(String[] args){ List list=newArrayList(); for(int i=1;i<=15;i++){ list.add(new Integer(i)); }
System.out.println(\列表中的元素:\\n\\t\+list); Collections.shuffle(list);
System.out.println(\随机排序后,列表中的元素:\\n\\t\+list); Collections.sort(list,Collections.reverseOrder()); System.out.println(\降序排序后,列表中的元素:\\n\\t\+list); Collections.sort(list); System.out.println(\升序排序后,列表中的元素:\\n\\t\+list); int i=Collections.binarySearch(list,12); int j=Collections.binarySearch(list,-9); if(i==11)
System.out.println(\找到:12\); else
System.out.println(\没有以下元素:12\); if(j!=-1)
System.out.println(\找到:-9\); else
System.out.println(\没有以下元素:-9\); } }
执行后结果与老师提供的相符。
其UML图截图如下:
8【选做】.Comparable、 Comparator两个排序接口的功能与区别?请书面回答。
答:功能:Comparable & Comparator 都是用来实现集合中的排序的。comparable是通用的接口,用户可以实现它来完成自己特定的比较,而comparator可以看成一种算法的实现,在需要容器集合collection需要比较功能的时候,来指定这个比较器,这可以看出一种设计模式,将算法和数据分离,就像C++ STL中的函数对象一样。
区别:前者应该比较固定,和一个具体类相绑定,而后者比较灵活,它可以被用于各个需要比较功能的类使用。可以说前者属于“静态绑定”,而后者可以“动态绑定”。
实验心得:
通过看书和百度来验证自己的实验猜想和推测,但有时候在实验过程中的一些问题百度也查不到,只能凭感觉改,但有时候总改不好。