2020-09-18(集合相关练习题 附答案)

package net.csdn.blog.wdd9527.week04.day04.test06;

import java.util.Scanner;

/**
 * (Map)利用Map,完成下面的功能:
 * 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该
 * 年没有举办世界杯,则输出:没有举办世界杯。
 * 附:世界杯冠军以及对应的夺冠年份,请参考下图.(图略)
 * 截止到2009 年为止,历届世界杯冠军
 * 
 * 读入一支球队的名字,输出该球队夺冠的年份列表。
 * 例如,读入“巴西”,应当输出
 * 1958 1962 1970 1994 2002
 * 读入“荷兰”,应当输出
 * 没有获得过世界杯
 * @author WDD
 *
 */

public class Main {
	public static void main(String[] args) {
		Tools tm = new Tools();
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要查询的年份:");
		
		tm.keyJudge(sc.nextInt());
		
		System.out.println("请输入要查询球队的名字:");
		tm.valueJudge(sc.next());
		
		sc.close();
	}

}




package net.csdn.blog.wdd9527.week04.day04.test06;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;

public class Tools {
	HashMap<Integer, String> map = new HashMap<>();

	Tools() {
		map.put(2006, "意大利");
		map.put(2002, "巴西");
		map.put(1998, "法国");
		map.put(1994, "巴西");
		map.put(1990, "德国");
		map.put(1986, "阿根廷");
		map.put(1982, "意大利");
		map.put(1978, "阿根廷");
		map.put(1974, "德国");
		map.put(1970, "巴西");
		map.put(1966, "英格兰");
		map.put(1962, "巴西");
		map.put(1958, "巴西");
		map.put(1954, "德国");
		map.put(1950, "乌拉圭");
		map.put(1938, "意大利");
		map.put(1934, "意大利");
		map.put(1930, "乌拉圭");
		
	}
	
	//判断这一年有无世界杯
	public void keyJudge(int a) {
		//遍历map集合,看这一年有没有世界杯
		//对比key值,因此用.keyset()方法
		Set<Integer> key = map.keySet();
		int count = 0;
		for (Integer integer : key) {
			if (integer == a) {
				System.out.println(a + "年的世界杯冠军是:" + map.get(integer));
				return;
			} else {
				count++;
				if (count == key.size()) {
					System.out.println(a + "年没有举办世界杯。");
				}
			}
		}
	}
	
	//判断这个国家那一年获得世界杯
	public void valueJudge (String a) {
		//需要遍历map集合,通过key获得value,所以用entrySet()方法转换为set集
		Set<Entry<Integer,String>> set = map.entrySet();
		int count = 0;
		Iterator<Entry<Integer, String>> it = set.iterator();
		while (it.hasNext()) {
			Entry<Integer, String> next = it.next();
			String value = next.getValue();
			if (value.equals(a)) {
				Integer key = next.getKey();
				System.out.print(key + " ");
			} else {
				count++;
				if (count == set.size()) {
					System.out.println(a + "没有获得过世界杯。");
				}
			}
			
		}
	}

}

package net.csdn.blog.wdd9527.week04.day04.test05;

import java.util.LinkedList;

/**
 * 设计一个Student类,该类中包括学生的姓名和成绩。创建Student类的5个对象
 * 将以上5个对象放入LinkedList中,完成如下操作和统计: 
 * 1、输出LinkedList中的对象个数。 
 * 2、删除姓名为“刘杰”的学生信息,并输出LinkedList中现有学生信息。 
 * 3、将姓名为“刘德华”的学生成绩改为95。 
 * 4、输出成绩不及格的学生姓名。 
 * @author WDD
 *
 */

public class Main {
	public static void main(String[] args) {
		LinkedList<Student> list = new LinkedList<>();
		Student s = new Student("刘德华", 90);
		Student s1 = new Student("张学友", 80);
		Student s2 = new Student("刘杰", 65);
		Student s3 = new Student("章子怡", 100);
		Student s4 = new Student("周迅", 60);
		
		list.add(s);
		list.add(s1);
		list.add(s2);
		list.add(s3);
		list.add(s4);
		
		//输出LinkedList中的对象个数。 
		System.out.println("总共有" + list.size() + "个学生。");
		
		//删除姓名为“刘杰”的学生信息,并输出LinkedList中现有学生信息。
		System.out.println("删除刘杰的信息之后:");
		list.remove(s2);
		for (Student student : list) {
			System.out.println(student);
		}
		System.out.println("将刘德华的成绩改为95之后:");
		//将姓名为“刘德华”的学生成绩改为95。 
		list.set(0, new Student("刘德华",95));
		for (Student student : list) {
			System.out.println(student);
		}
		
		//输出成绩不及格的学生姓名。(低于80分成绩不合格)
		System.out.println("不合格学生姓名:");
		for (int i = 0; i < list.size(); i++) {
			if (list.get(i).getGrade() < 80) {
				System.out.println(list.get(i).getName());
			}
		}
	}

}





package net.csdn.blog.wdd9527.week04.day04.test05;

public class Student {
	private String name;
	private Integer grade;
	public Student(String name, Integer grade) {
		super();
		this.name = name;
		this.grade = grade;
	}
	public Student() {
		super();
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", grade=" + grade + "]";
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getGrade() {
		return grade;
	}
	public void setGrade(Integer grade) {
		this.grade = grade;
	}
	

}


package net.csdn.blog.wdd9527.week04.day04.test03;

import java.util.ArrayList;
import java.util.Collections;

/**
 * 编写代码,使用ArrrayList类的对象顺序存储“A”—“Z”这26个字符,
 * 然后倒序打印出该字符
 *
 */

public class Demo03 {
	public static void main(String[] args) {
		ArrayList<Character> list = new ArrayList<>();
		for (int i = 65; i <= 90; i++) {
			list.add((char)i);
		}
		//方式1:
		for (int i = list.size(); i > 0; i--) {
			System.out.print(list.get(i - 1) + " ");//size是从1开始数,get()是从0开始数。
		}
		
		System.out.println();
		
		//方式2:
		Collections.reverse(list);//Collections工具类里面的.reeverse()可以实现集合反转
		for (Character ch : list) {
			System.out.print(ch + " ");
		}
		
	}

}
package net.csdn.blog.wdd9527.week04.day03.Test03;

import java.util.Iterator;
import java.util.TreeSet;

/**
 * 向TreeSet集合中加入5个员工的对象,根据员工的年龄(升序)进行排序,若年龄相同,
 * 再根据工龄(降序)来排序,若工龄相同,根据薪水(降序)排序
 * @author WDD
 *
 */

public class Main {
	public static void main(String[] args) {
		TreeSet<Worker> set = new TreeSet<>();
		set.add(new Worker("张三", 30, 10, 7000));
		set.add(new Worker("李四", 28, 11, 6000));
		set.add(new Worker("赵五", 29, 10, 5500));
		set.add(new Worker("钱六", 28, 10, 5500));
		set.add(new Worker("孙七", 30, 10, 6500));
		
		Iterator<Worker> i = set.iterator();
		while (i.hasNext()) {
			Worker w = (Worker) i.next();
			System.out.println(w.toString());
			
		}
	}

}





package net.csdn.blog.wdd9527.week04.day03.Test03;

public class Worker implements Comparable<Worker>{
	private String name;
	private Integer age;
	private Integer workAge;//工龄
	private Integer salary;//工资
	public Worker(String name, Integer age, Integer workAge, Integer salary) {
		super();
		this.name = name;
		this.age = age;
		this.workAge = workAge;
		this.salary = salary;
	}
	public Worker() {
		super();
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Integer getWorkAge() {
		return workAge;
	}
	public void setWorkAge(Integer workAge) {
		this.workAge = workAge;
	}
	public Integer getSalary() {
		return salary;
	}
	public void setSalary(Integer salary) {
		this.salary = salary;
	}
	@Override
	public String toString() {
		return "Worker [name=" + name + ", age=" + age + ", workAge=" + workAge + ", salary=" + salary + "]";
	}
	@Override
	public int compareTo(Worker o) {
		if (this.age == o.getAge()) {
			if (this.workAge == o.getWorkAge()) {
				if (this.salary < o.getSalary()) {
					return 1;
				}
			} else if (this.workAge > o.getWorkAge()) {}
			return 1;
		} else if (this.age > o.getAge()) {
			return 1;
		}
		return -1;
	}

}
package net.csdn.blog.wdd9527.week04.day03.Test02;

import java.util.ArrayList;
import java.util.Iterator;

/**
 *按照要求完成下面的题目
 *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 方法。 
 *6.为工人类Worker重写equals方法,当姓名、年龄、工资全部相等时候才返回true  
 * @author WDD
 *
 */

public class Main {
	public static void main(String[] args) {
		ArrayList<Worker> list = new ArrayList<>();
		list.add(new Worker("zhang3", 18, 3000));
		list.add(new Worker("li4", 25, 3500));
		list.add(new Worker("wang5", 22, 3200));
		
		//在li4之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300 
		list.add(1, new Worker("zhao6", 24, 3300));
		
		//删除wang5 的信息
		list.remove(3);
		
		//利用for 循环遍历,打印List 中所有工人的信息 
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i).toString());
		}
		
		//利用迭代遍历,对List中所有的工人调用work 方法。
		Iterator<Worker> i = list.iterator();
		while (i.hasNext()) {
			i.next().work();
		}
		
		
	}

}
import java.util.HashMap;
import java.util.Map;

/*
 * 统计一个字符串中每个字符出现的次数,保存到HashMap集合中
 */
public class Main {
	public static void main(String[] args) {
		String str = "asdfjk2348uj;sdjf89234-8-asjsf";

//		Map<String, Integer> map = new HashMap<String, Integer>();

		// 方式1
		/*for (int i = 0; i < str.length(); i++) {
			String c = str.charAt(i) + "";
//			if (map.containsKey(c)) {
//				// 如果出现该字符,则次数+1
//				int count = map.get(c);
//				count++;
//				map.put(c, count);
//			} else {
//				// 如果从示出现过,则设置次数为1
//				map.put(c, 1);
//			}
			map.put(c, map.containsKey(c)?map.get(c)+1:1);
		}
		System.out.println(map);*/
		
		// 方式2
//		while(!str.isEmpty()){
//			String c = str.charAt(0)+"";
//			String newStr = str.replace(c, "");
//			map.put(c,str.length()-newStr.length());
//			str=newStr;
//		}
//		System.out.println(map);
		
		// 方式3
		Map<Character, Integer> map=new HashMap<Character, Integer>();
		for(int i=0;i<str.length();i++){
			char c = str.charAt(i);
			if(map.containsKey(c)){
				map.put(c, map.get(c)+1);
			}else{
				map.put(c, 1);
			}
		}
		System.out.println(map);
	}
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

/*
 * 定义一个学生类Stu
 * 属性:id、name、age
 * 
 * 1.提示用户循环输入学生的信息,存储到ArrayList集合中
 * 2.输出所有学生的信息
 * 3.根据学号修改指定学生信息
 * 4.根据学号删除学生
 */
public class Main {

	static Scanner input = new Scanner(System.in);
	static List<Stu> list = new ArrayList<Stu>();

	public static void main(String[] args) {
		inputStudentInfo();

		printStudentInfo();
		
		System.out.print("请输入要修改的学生学号:");
		int id = input.nextInt();
		modifyById(id);
		
		System.out.print("请输入要删除的学生学号:");
		removeById(input.nextInt());
	}

	// 输入学生信息
	public static void inputStudentInfo() {
		while (true) {
			System.out.println("-----请输入学生信息------");
			Stu stu = new Stu();
			System.out.print("请输入学号:");
			int id = input.nextInt();
			if (id == 0) {
				break;
			}
			stu.setId(id);
			System.out.print("请输入姓名:");
			stu.setName(input.next());
			System.out.print("请输入年龄:");
			stu.setAge(input.nextInt());

			list.add(stu);
		}
	}

	// 输出学生信息
	public static void printStudentInfo() {
		System.out.println("===============学生信息如下=================");
		System.out.println("学号\t姓名\t年龄");
		for (Stu stu : list) {
			System.out.println(stu.getId() + "\t" + stu.getName() + "\t"
					+ stu.getAge());
		}
	}

	// 根据学号修改学生信息
	public static void modifyById(int id) {
		// 查找判断学生是否存在
		Stu stu = findById(id);
		if (stu == null) {
			System.out.println("指定学号的学生不存在!");
			return;
		}
		// 修改学生信息
		System.out.print("请输入要修改的姓名:");
		String name = input.next();
		stu.setName(name);
		System.out.print("请输入要修改的年龄:");
		int age = input.nextInt();
		stu.setAge(age);
		System.out.println("修改成功!");
		printStudentInfo(); // 显示修改后的学生信息
	}

	// 根据学号查找学生
	public static Stu findById(int id) {
		Iterator<Stu> it = list.iterator();
		while (it.hasNext()) {
			Stu stu = it.next();
			if (stu.getId() == id) {
				return stu;
			}
		}
		return null;
	}

	// 根据学号删除学生
	public static void removeById(int id){
		Stu stu = findById(id);
		if (stu == null) {
			System.out.println("指定学号的学生不存在!");
			return;
		}
		list.remove(stu);
		System.out.println("删除成功!");
		printStudentInfo(); //显示删除后的学生信息
	}
}

class Stu {
	private int id;
	private String name;
	private int age;

	public Stu() {
		super();
	}

	public Stu(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Stu [id=" + id + ", name=" + name + ", age=" + age + "]";
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值