1.第一题 (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 读入“荷兰”,应当输出 没有获得过世界杯
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Test01 { public static void main(String[] args) { //Map实例化 Map<String, String> m = new HashMap<>(); //添加数据 m.put("1930","乌拉圭"); m.put("1934", "意大利"); m.put("1938","意大利"); m.put("1950","乌拉圭"); m.put("1954","西德"); m.put("1958","巴西"); m.put("1962","巴西"); m.put("1966","英格兰"); m.put("1970","巴西"); m.put("1974","西得"); m.put("1978","阿根廷"); m.put("1982","意大利"); m.put("1986","阿根廷"); m.put("1990","西得"); m.put("1994","巴西"); m.put("1998","法国"); m.put("2002","巴西"); m.put("2006","意大利"); m.put("2010","西班牙"); m.put("2014","德国"); System.out.println("请输入年份值:"); Scanner sc = new Scanner(System.in); String str = sc.nextLine(); //判断key值是否等于输入的值 if(m.containsKey(str)==true) { System.out.println(m.get(str)); } else { System.out.println("今年没有举办世界杯"); } System.out.println("请输入世界杯夺冠的国家:"); String str2 = sc.nextLine(); if(m.containsValue(str2)==true) { System.out.println("该对获取冠军的年份值是:"); for(String temp: m.keySet()) { if(m.get(temp).equals(str2)) { System.out.println(" "+temp); } } } else { System.out.println( str2+"没有获得冠军!"); } } }
2.第二题 已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数
2008 北京奥运会男足参赛国家:
科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,新西 兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利
import java.util.ArrayList; import java.util.List; import java.util.Random; public class Test02 { public static void main(String[] args) { //List集合 List<String> ls = new ArrayList<>(); String ls1; //添加数据 ls.add("科特迪瓦"); ls.add("阿根廷"); ls.add("澳大利亚"); ls.add("塞尔维亚"); ls.add("荷兰"); ls.add("尼日利亚"); ls.add("日本"); ls.add("美国"); ls.add("中国"); ls.add("新西兰"); ls.add("巴西"); ls.add("比利时"); ls.add("韩国"); ls.add("喀麦隆"); ls.add("洪都拉斯"); ls.add("意大利"); Random ran = new Random(); for(int i =1;i<=4;i++) { System.out.println("第"+i+"组"); for(int j=0;j < 4;j++) { ls1 =ls.get(ran.nextInt(ls.size())); System.out.print(ls1+" "); ls.remove(ls1); } System.out.println(); } } }
3.第三题 有如下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) 计算各个班级的平均分
import java.util.ArrayList; import java.util.List; public class Student { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } private int score; private String ClassNum; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public String getClassNum() { return ClassNum; } public void setClassNum(String classNum) { ClassNum = classNum; } public Student(String name, int age,int score,String ClassNum) { this.name =name; this.age =age; this.score =score; this.ClassNum =ClassNum; } @Override public String toString() { // TODO 自动生成的方法存根 return name+" "+age+" "+score+" "+ClassNum+" "; } }
import java.util.ArrayList; import java.util.List; public class Test03 { public static void main(String[] args) { //实例化集合 List<Student> 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")); //遍历集合中年龄的数据,并进行计算 int sum=0; for(int i=0;i<list.size();i++) { sum+=list.get(i).getAge(); } System.out.println("学生的平均年龄:"+sum/list.size()); //求每个班级的平均分 int num1=0; int num2=0; int num3=0; int sum1=0; int sum2=0; int sum3=0; for(int i=0;i<list.size();i++) { Student st = list.get(i); if(st.getClassNum()=="Class04") { num1++; sum1+=st.getScore(); } else if(st.getClassNum()=="Class05") { num2++; sum2+=st.getScore(); } else { num3++; sum3+=st.getScore(); } } System.out.println("Class04班的平均分:"+sum1/num1); System.out.println("Class05班的平均分:"+sum2/num2); System.out.println("Class06班的平均分:"+sum3/num3); } }
4.第四题 (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
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Test04 { public static void main(String[] args) { List<String>list = new ArrayList<>(); list.add("Hello"); list.add("World"); list.add("Learn"); System.out.println("未翻转前:"+list); Collections.reverse(list); System.out.println("翻转后:"+list); } }
5.第五题(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 和余额。
import java.util.Random; public class Account { private long id; private double balance; private String 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; } public Account(double balance,String password) { //id随机分配 Random ran = new Random(); this.id=ran.nextInt(10); this.balance =balance; this.password =password; } @Override public String toString() { // TODO 自动生成的方法存根 return balance+" "; } }
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test05 { public static void main(String[] args) { // TODO 自动生成的方法存根 //实例化ArrayList集合 List<Account> ls = new ArrayList<>(); //向集合里添加数据 ls.add(new Account(10.00,"1234")); ls.add(new Account(15.00,"5678")); ls.add(new Account(0,"1010")); //实例化Map Map<Long,Account> mp =new HashMap<>(); //取出List集合中的数据,并把它放入Map中 for(int i=0 ;i<ls.size();i++) { mp.put(ls.get(i).getId(), ls.get(i)); } //遍历出Map 中的内容 //通过遍历Key的set集合,同时获取value for(Long k:mp.keySet()) { System.out.println("id ="+k+"余额 "+mp.get(k)); } } }
6.第六题(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 方法。
import java.util.ArrayList; import java.util.Iterator; import java.util.List; 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"); } public static void main(String[]ages) { //实例化List集合 List<Worker> ls = new ArrayList<>(); //往集合里添加数据 ls.add(new Worker("zhang3",18,3000.0)); ls.add(new Worker("li4",25,3500.0)); ls.add(new Worker("wang5",22,3200.0)); //在li4前插入一行数据 ls.add(1, new Worker("zhao6",24,3300.0)); //删除wang5的信息 ls.remove(3); //for循环遍历出所有工人的信息 for(int i=0;i<ls.size();i++) { System.out.println("工人的信息是:"+ls.get(i)); } //获取迭代器并对所有工人调用work方法 Iterator<Worker>it =ls.iterator(); while(it.hasNext()) { Worker w =it.next(); w.work(); } } @Override public String toString() { // TODO 自动生成的方法存根 return name+" "+age+" "+salary; } }