集合练习题之二

本文介绍了一个使用Java实现的学生信息管理系统,该系统通过控制台输入学生姓名及三门课程的成绩,并计算学生的总分,最后按总分升序对学生信息进行排序展示。
package cn.itcast.demo1;

public class Student {
		private String name ;
		private double TotalScore;
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public Student(String name, double totalScore) {
			this.name = name;
			TotalScore = totalScore;
		}
		public double getTotalScore() {
			return TotalScore;
		}
		public Student() {
		}
		public void setTotalScore(double totalScore) {
			TotalScore = totalScore;
		}
		@Override
		public String toString() {
			return name + ", TotalScore=" + TotalScore;
		}
}
 
/*
 1.有5个学生,每个学生有三门功课
 2.从键盘输入以上数据(姓名,三门课成绩)
 3.输入格式为:zhangshan,30,40,60并计算出总成绩
 4.把学生信息和计算出来的总成绩按从低到高的顺序进行存储
  分析:
 (1)定义一个学生类,属性:姓名,总成绩
 (2)将学生对象存到ArrayList中
 (3)Collections工具类中有一个方法,public static <T> void sort(List<T> list,Comparator<? super T> c)
             只能传list的实现类
 */public class Test1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		List<Student> list = new ArrayList<Student>();
		for (int i = 0; i < 5; i++) {
			System.out.println("请输入学生姓名和成绩:");
			String str = sc.nextLine();
			String[] arr = str.split(",");
			double score = 0;
			for (int j = 1; j < arr.length; j++) {
				score += Double.parseDouble(arr[j]);
			}
			list.add(new Student(arr[0], score));
		}

		Collections.sort(list, new Comparator<Student>() {
			@Override
			public int compare(Student o1, Student o2) {
				//返回值>0,降序           <0,升序                  =0,原样排列
				return (int) (o1.getTotalScore() - o2.getTotalScore());
			}
		});
		
		//遍历集合
		for (Student student : list) { System.out.println(student); }
		
		//不用匿名内部类
		/*
		 *  MyComparator myCom = new MyComparator();
		 *  Collections.sort(list,myCom);
		 */

	}

}
//自定义一个比较器类,去实现Comparator
class MyComparator implements Comparator<Student> {
	@Override
	public int compare(Student o1, Student o2) {
		return (int) (o1.getTotalScore() - o2.getTotalScore());
	}
}

Java集合框架是Java编程中非常重要的部分,它提供了系列用于管理对象集合和接口。以下是些关于Java集合框架的练习题及其详细解答,涵盖List、Set、Map等核心接口的应用。 ### 习题:List集合操作 **题目:** 编写个Java程序,创建个`ArrayList`,并向其中添加5个字符串元素。然后,实现个方法,将该列表中的元素反转,并输出反转前和反转后的内容。 **答案:** ```java import java.util.ArrayList; import java.util.List; public class ReverseListExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("cherry"); list.add("date"); list.add("elderberry"); System.out.println("反转前:" + list); reverseList(list); System.out.println("反转后:" + list); } public static <E> void reverseList(List<E> list) { for (int i = 0; i < list.size() / 2; i++) { E temp = list.get(i); list.set(i, list.get(list.size() - 1 - i)); list.set(list.size() - 1 - i, temp); } } } ``` ### 习题:Set集合去重 **题目:** 使用`HashSet`存储组整数,并确保集合中没有重复的元素。编写代码验证这点,并输出最终的集合内容。 **答案:** ```java import java.util.HashSet; import java.util.Set; public class UniqueSetExample { public static void main(String[] args) { Set<Integer> set = new HashSet<>(); set.add(10); set.add(20); set.add(30); set.add(20); // 重复元素,不会被添加 System.out.println("Set集合内容:" + set); } } ``` ### 习题三:Map集合操作 **题目:** 创建个`HashMap`,存储学生姓名和对应的分数。要求实现以下功能: 1. 添加三个学生信息; 2. 修改某个学生的分数; 3. 删除学生; 4. 遍历并输出所有学生的信息。 **答案:** ```java import java.util.HashMap; import java.util.Map; public class StudentScores { public static void main(String[] args) { Map<String, Integer> studentMap = new HashMap<>(); // 添加学生信息 studentMap.put("Alice", 85); studentMap.put("Bob", 90); studentMap.put("Charlie", 78); // 修改分数 studentMap.put("Alice", 95); // 删除学生 studentMap.remove("Charlie"); // 遍历输出 System.out.println("学生信息:"); for (Map.Entry<String, Integer> entry : studentMap.entrySet()) { System.out.println(entry.getKey() + " - " + entry.getValue()); } } } ``` ### 习题四:List与Set转换 **题目:** 给定包含重复元素的`List`,将其转换为个`Set`以去除重复项,并输出转换前后的集合。 **答案:** ```java import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class ListToSetConversion { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("red"); list.add("green"); list.add("blue"); list.add("red"); // 重复元素 Set<String> set = new HashSet<>(list); System.out.println("原始List:" + list); System.out.println("转换后的Set:" + set); } } ``` ### 习题五:使用Iterator遍历集合 **题目:** 使用`Iterator`遍历个`ArrayList`,并删除其中所有值为"delete"的元素。 **答案:** ```java import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class IteratorExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("keep"); list.add("delete"); list.add("retain"); list.add("delete"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { if ("delete".equals(iterator.next())) { iterator.remove(); } } System.out.println("清理后的列表:" + list); } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值