List list = new ArrayList();
list.add(new Account(10.00, “1234”)); list.add(new Account(15.00, “5678”)); list.add(new Account(0, “1010”));
要求把List 中的内容放到一个Map 中,该Map 的键为id,值为相应的Account 对象。 最后遍历这个Map,打印所有Account 对象的id 和余额。
20. *(List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。 例如:
List list = new ArrayList(); list.add(“Hello”); list.add(“World”);
list.add(“Learn”); //此时list 为Hello World Learn reverseList(list);
//调用reverseList 方法之后,list 为Learn World Hello s=list.size()
for(int i=0;i
list.set(s-1-I, set(i,list.get(s-1-i))) }
21. **(Map,Hash 算法)有如下代码: import java.util.*; class MyKey{ int keyValue; public MyKey(){}
public MyKey(int value){this.keyValue = value;} }
class MyValue{ String value;
public MyValue(){}
public MyValue(String value){this.value = value;} public String toString(){return value;} }
public class TestMap{
public static void main(String args[]){ Map map = new HashMap(); MyKey key1 = new MyKey(10);
map.put(new MyKey(10), new MyValue(“abc”)); map.put(new MyKey(10), new MyValue(“cde”)); System.out.println(map.get(key1));
System.out.println(map.size()); } }
写出该代码的输出结果。abc ,2 22. **(Id,hashCode,equals)为Worker 类增加id 属性,用来唯一标识一个员工。即:如果员工的id 不同,则不管其姓名、年龄、工资是否相同,都认为是不同的员工。部分代 码如下:
class Worker{
private final Long id; private String name; private double salary; private int age;
public Worker(long id){ this.id=id; }
public Worker(long id,String name,double salary,int age){ this.id=id; this.name=name; this.salary=salary; this.age=age; }
//构造方法… //get/set 方法…
public boolean equals(Object obj){ //1 此处仅判断id 是否相同 if(obj==null)return false if(obj==this) return true;
if(obj instanceof Worker){ Worker w=(Worker)obj if(w.getId()==this.id){ return true;
} }
return false }
public int hashCode(){ //2 此处返回hashCode return (int)id; }
}
要求:
1) 完善构造方法和get/set 方法。要求自动分配Worker 的id 2) 完善equals 方法。要求仅判断id 是否相同 3) //2 处,如果写成
return (int)(name.hashCode() + id.hashCode() + age + salary); 是否正确?为什么?
23. **(综合)有如下Student 对象
其中,classNum 表示学生的班号,例如“class05”。 有如下List
List list = new ArrayList();
list.add(new Student(“Tom”, 18, 100, “class05”)); list.add(new Student(“Jerry”, 22, 70, “class04”)); list.add(new Student(“Owen”, 25, 90, “class05”)); list.add(new Student(“Jim”, 30,80 , “class05”)); list.add(new Student(“Steve”, 28, 66, “class06”)); list.add(new Student(“Kevin”, 24, 100, “class04”)); 在这个list 的基础上,完成下列要求: 1) 计算所有学生的平均年龄 2) 计算各个班级的平均分 Map
value: List
if(!map.constainKey(“class05”)){
List < Integer > list =new Arraylist< Integer >() list.add(100);
map.put(“class05”, list) }else{
List < Integer > list= map.get(“class05”) list.add(90); }
class AA{
int sum; int count; } map
class05 aa{sum:270,count 3} sum/count class04 aa{sum:270,count 3}
class06 aa{sum:270,count 3}
24. **(综合)已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。 注:参赛球队列表见附录
注2:使用Math.random 来产生随机数。 2. 2008 北京奥运会男足参赛国家:
科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国, 新西兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利
25. **(综合)写一个MyStack 类,表示“栈”这种数据结构。
栈在表示上,就如同一个单向开口的盒子,每当有新数据进入时,都是进入栈顶。其基 本操作为push 和pop。push 表示把一个元素加入栈顶,pop 表示把栈顶元素弹出。 示意图如下:
栈的特点:先进后出。
栈的基本操作:
1) push(Object o):表示把元素放入栈 2) Object pop():返回栈顶元素,并把该元素从栈中删除。如果栈为空,则返回 null 值 3) Object peek():返回栈顶元素,但不把该元素删除。如果栈为空,则返回null值。 4) boolean isEmpty():判断该栈是否为空 5) int size():返回该栈中元素的数量 要求:
1) 利用List,实现栈。
2) 讨论:应当用ArrayList 作为实现类还是用LinkedList?为什么? 附录
1. 截止到2009 年为止,历届世界杯冠军
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java集合-练习题(3)在线全文阅读。
相关推荐: