集合作业
第一题 (Map)利用Map,完成下面的功能:
从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。
附:世界杯冠军以及对应的夺冠年份,请参考本章附录。 附录
- 历届世界杯冠军
届数 |
举办年份 |
举办地点 |
冠军 |
1930年 |
乌拉圭 |
乌拉圭 |
|
第二届 |
1934年 |
意大利 |
意大利 |
第三届 |
1938年 |
法国 |
意大利 |
第四届 |
1950年 |
巴西 |
乌拉圭 |
第五届 |
1954年 |
瑞士 |
西德 |
第六届 |
1958年 |
瑞典 |
巴西 |
第七届 |
1962年 |
智利 |
巴西 |
第八届 |
1966年 |
英格兰 |
英格兰 |
第九届 |
1970年 |
墨西哥 |
巴西 |
第十届 |
1974年 |
前西德 |
西德 |
第十一届 |
1978年 |
阿根廷 |
阿根廷 |
第十二届 |
1982年 |
西班牙 |
意大利 |
第十三届 |
1986年 |
墨西哥 |
阿根廷 |
第十四届 |
1990年 |
意大利 |
西德 |
第十五届 |
1994年 |
美国 |
巴西 |
第十六届 |
1998年 |
法国 |
法国 |
第十七届 |
2002年 |
韩日 |
巴西 |
第十八届 |
2006年 |
德国 |
意大利 |
第十九届 |
2010年 |
南非 |
西班牙 |
第二十届 |
2014年 |
巴西 |
德国 |
(Map)在原有世界杯Map 的基础上,增加如下功能: 读入一支球队的名字,输出该球队夺冠的年份列表。 例如,读入“巴西”,应当输出 1958 1962 1970 1994 2002 读入“荷兰”,应当输出 没有获得过世界杯
package com.hanqi.text; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class zuoye1098{ public static void main(String[] args) { Map<String,String>a=new HashMap<>();//初始化Map 然后赋值 a.put("1930", "乌拉圭"); a.put("1934", "意大利"); a.put("1938", "意大利"); a.put("1950", "乌拉圭"); a.put("1954", "西德"); a.put("1958", "巴西"); a.put("1962", "巴西"); a.put("1966", "英格兰"); a.put("1970", "巴西"); a.put("1974", "西德"); a.put("1978", "阿根廷"); a.put("1982", "意大利"); a.put("1986", "阿根廷"); a.put("1990", "西德"); a.put("1994", "巴西"); a.put("1998", "法国"); a.put("2002", "巴西"); a.put("2006", "意大利"); a.put("2010", "西班牙"); a.put("2014", "德国"); Scanner sc = new Scanner(System.in); System.out.println("输入一个年份"); String b = sc.nextLine(); if(a.containsKey(b)==true) { System.out.println("该年夺得世界杯的是:"+a.get(b)); } else { System.out.println("这年没世界杯"); } Scanner sc1 = new Scanner(System.in); System.out.println("输入一个国家查看获奖的年份"); String b1 = sc1.nextLine(); if(a.containsValue(b1)==true) { for(String k:a.keySet()) //遍历 { if(a.get(k).equals(b1)) //满足条件输出 { System.out.print(k); } } } else { System.out.println("这个国家没获得奖杯"); } } }
第二题 已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数
2008 北京奥运会男足参赛国家:
科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,新西 兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利
package com.hanqi.text; import java.util.ArrayList; import java.util.List; import java.util.Random; public class Zuoye11098 { public static void main(String[] args) { List<String> a=new ArrayList<>();//初始化 并赋值
a.add("科特迪瓦"); a.add("阿根廷"); a.add("澳大利亚"); a.add("塞尔维亚"); a.add("荷兰"); a.add("尼日利亚"); a.add("日本"); a.add("美国"); a.add("中国"); a.add("新西兰"); a.add("巴西"); a.add("比利时"); a.add("韩国"); a.add("喀麦隆"); a.add("洪都拉斯"); a.add("澳大利亚"); Random ran = new Random(); String b ; for(int i =1;i<=4;i++) { System.out.println(i+"组");//输出随机获得的String for(int j = 0;j<4;j++) { b = a.get(ran.nextInt(a.size())); System.out.print(" "+b); a.remove(b);//在集合中删除输出的String } System.out.println("\n"); } } }
第三题 有如下Student 对象,
private String name;
private int age;
private int score;
private String classNum;
其中,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) 计算各个班级的平均分
第四题 (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
第五题 (Map)设计Account 对象如下:
private long id;
private double balance;
private String password;
要求完善设计,使得该Account 对象能够自动分配id。 给定一个List 如下:
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 和余额。
package com.hanqi.text; public class Account { private long id; private double balance; private String password; Account(double balance,String password) { this.balance=balance; this.password=password; } public long getId() { return id; } public void setId(long id) { this.id = id; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
package com.hanqi.text; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class TestAccount { public static void main(String[] args) { List<Account> list = new ArrayList<>(); list.add(new Account(10.00, "1234")); list.add(new Account(15.00, "5678")); list.add(new Account(0, "1010")); Map<Long,Account> m1 = new HashMap<>(); m1.put((long) 0, list.get(0)); m1.put((long) 1, list.get(1)); m1.put((long) 2, list.get(2)); for(Long k:m1.keySet()) //遍历 { System.out.println(m1.get(k).getBalance()); } } }
第六题
5. (List)已知有一个Worker 类如下:
public class Worker
{ private int age;
private String name;
private double salary;
public Worker (){}
public Worker (String name, int age, double salary)
{ this.name = name;
this.age = age;
this.salary = salary; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public double getSalary(){ return salary; }
public void setSalary(double salary){ this.salary = salary; }
public void work(){
System.out.println(name + “ work”); } }
完成下面的要求
1) 创建一个List,在List 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
3) 删除wang5 的信息
4) 利用for 循环遍历,打印List 中所有工人的信息
5) 利用迭代遍历,对List 中所有的工人调用work 方法。