如没有特别提示,本练习涉及到的类限定在java.util包中。且不认为java.util.xxx包属于java.util包,它们是两个独立的包。
如果没有上下文语境,“集合”代表“所有的能够容纳一堆东西的数据结构”,而不是特指Set这一种数据结构。
一个都不能少
a1 在java中有很多数据结构可以表示一堆东西,他们包括:数组(Array)、列表(List)、集合(Set)、映射(Map)等等。请找出这几种数据结构之间的区别和联系。
a2 如何能够知道一个接口有哪些具体的实现类?请找出列表、集合、映射等接口的实现类。并说明这些实现类之间的区别和联系。例如:ArrayList和Vector是List的实现,他们有什么区别和联系?
a3 请试着将你找到的所有和集合相关的类用一张图来表示,并标出他们之间的继承关系。
a4 集合中可以放什么,不可以放什么?为什么?考虑范围包括:对象,原始类型数据,null。
整装待发
b1 数组的初始化有几种方式?
请详细解释以下每一行代码在做一件什么事情?他们是否等价?
String[] s1 = {"1","2","3"};
String[] s2 = new String[]{"1","2","3"};
String[] s3 = new String[3];
请详细解释以下每一行代码在做一件什么事情?他们是否等价?
String[][] ss1 = new String[2][];
String[][] ss2 = new String[2][0];
String[][] ss3 ={{},{}};
String[][] ss4 = new String[2][2];
b2 以下两种初始化方式有何区别?我们应该使用哪种?为什么?
List a = new ArrayList();
ArrayList b = new ArrayList();
阅兵仪式
c1 在编程领域,什么叫遍历?如何遍历一个多维数组?请举例说明。
c2 如何遍历集合?请给出每种集合的遍历代码。
c3 在遍历的过程中,是否能够删除或增加一个集合元素?如果有修改的需求怎么办?请结合以下代码说明。
List l = new ArrayList();
l.add("a");
System.out.println(l.size());
for(Iterator iter=l.iterator();iter.hasNext();){
iter.next();
l.add("b");
}
c4 你如何理解Iterator接口?他为什么能够遍历所有的集合类型,甚至是当前未知的集合类型?
沙场征战
d1 有如下字符串:
http://blog.csdn.net/webcenter? a=1&b=2&c=3&c=4
去掉网址后剩下的部分叫做查询字符串:a=1&b=2&c=3&c=4,其中有四对参数,用&分割。例如第一对中,a叫做键,1叫做值。
请将查询字符串以键值对为单位,存入一个适当的集合结构当中。该集合应该能够方便的进行以下操作。
请在该集合中再增加几个键值对,c=5,c=6,a=2,a=3,d=1,b=2。如果有重名的键存在,但值不同,则不能覆盖原来的;如果有重名的键值对,则要覆盖。
请用代码从集合中找出符合以下条件的数据:值为2的键值对;键为c的键值对;所有的键列表;所有的值列表。
请在该集合中去掉几个键值对:键为c的键值对;键为a值为2的键值对。
将集合中的所有数据打印出来,并将集合中的键值对转化为新的查询字符串。
d2 你能否将以上操作封装到一个类中,作为处理url地址的工具供以后使用。