第一题
package Test1;
public class Student implements Comparable<Student>{
//姓名
private String name;
//语文成绩
private int yuwen;
//数学成绩
private int math;
//英语成绩
private int english;
public Student() {
super();
}
public Student(String name, int yuwen, int math, int english) {
super();
this.name = name;
this.yuwen = yuwen;
this.math = math;
this.english = english;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getYuwen() {
return yuwen;
}
public void setYuwen(int yuwen) {
this.yuwen = yuwen;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getEnglish() {
return english;
}
public void setEnglish(int english) {
this.english = english;
}
public int getSum(){
return this.yuwen+this.math+this.english;
}
@Override
public int compareTo(Student s) {
// return 0;
//总分从高到低
int num1 = s.getSum()-this.getSum();
//如果总分相同,按语文从高到低
int num2 = num1 == 0? s.getYuwen()-this.getYuwen(): num1;
//如果总分和语文成绩都相同,按数学从高到低
int num3 = num2 == 0? s.getMath()-this.getMath(): num2;
//如果总分和各科成绩都相同,按姓名排列
int num4 = num3 == 0? this.getName().compareTo(s.getName()): num3;
return num4;
}
}
package Test1;
import java.util.Scanner;
import java.util.TreeSet;
/**
* 1)键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台
a:自然排序
b:选择器排序
*
*/
public class Test {
public static void main(String[] args) {
//创建TreeSet集合对象
TreeSet<Student> ts = new TreeSet<Student>();
System.out.println("开始录入学生信息");
for(int x = 0 ; x < 5; x++) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第"+(x+1)+"个学生的姓名:");
String name = sc.nextLine();
System.out.println("请输入第"+(x+1)+"个学生的语文成绩:");
int Chinese = sc.nextInt();
System.out.println("请输入第"+(x+1)+"个学生的数学成绩:");
int Math = sc.nextInt();
System.out.println("请输入第"+(x+1)+"个学生的英语成绩:");
int English = sc.nextInt();
Student s = new Student(name,Chinese,Math,English);
ts.add(s);
}
System.out.println("信息录入完毕");
System.out.println("您录入的学生信息为:");
for(Student s:ts) {
System.out.println(s.getName()+"---"+s.getYuwen()+"---"+s.getMath()+"----"+s.getEnglish());
}
}
}
第二题
package Test2;
import java.util.HashSet;
import java.util.Set;
/**
* 2)获取10随机数,1-20之间,要求值不能重复!(ArrayList,HashSet)
*
*/
public class Test {
public static void main(String[] args) {
Set<Integer> set = new HashSet<Integer>();
for(int x = 0; x<10; x++) {
set.add(getRandom(1, 20));
}
for(int s: set) {
System.out.println(s);
}
}
public static int getRandom(int start,int end) {
int number = (int) ((Math.random()*(end-start+1))+start);
return number;
}
}
package Test3;
//第三题
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
/**
*
3)ArrayList集合嵌套HashMap集合并遍历。
需求:
假设ArrayList集合的元素是HashMap。有3个。
每一个HashMap集合的键和值都是字符串。
元素我已经完成,请遍历。
ArrayList<HashMap<String,String>>
结果:
周瑜---小乔
吕布---貂蝉
郭靖---黄蓉
杨过---小龙女
令狐冲---任盈盈
林平之---岳灵珊
* @author Shinelon
*
*/
public class Test {
public static void main(String[] args) {
//创建嵌套集合
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
//创建3个HashMap集合对象
HashMap<String,String> map1 = new HashMap<String,String>();
HashMap<String,String> map2 = new HashMap<String,String>();
HashMap<String,String> map3 = new HashMap<String,String>();
map1.put("周瑜", "小乔");
map1.put("吕布", "貂蝉");
map2.put("郭靖", "黄蓉");
map2.put("杨过", "小龙女");
map3.put("令狐冲", "任盈盈");
map3.put("林平之", "岳灵珊");
//将三个HashMap集合添加到大集合里边
list.add(map1);
list.add(map2);
list.add(map3);
//遍历
for(HashMap<String,String> map:list) {
Set<String> set = map.keySet();
for(String s : set) {
String value = map.get(s);
System.out.println(s+"----"+value);
}
System.out.println();
}
}
}