一、在一个列表中存储以下元素:red、blue、orange、yellow。
1.要求打印集合中最大和最小的元素
2.要求找出集合中长度最大和长度最小的元素
package day19;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Listone {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("red");
list.add("blue");
list.add("orange");
list.add("yellow");
Collections.sort(list);
System.out.println("最小的元素为:" + list.get(0));
System.out.println("最大的元素为:" + list.get(list.size() - 1));
Collections.sort(list, new ListTwo());
System.out.println("length最小的元素为:" + list.get(0));
System.out.println("length最大的元素为:" + list.get(list.size() - 1));
}
}
package day19;
import java.util.Comparator;
public class ListTwo implements Comparator<String>{
@Override
public int compare(String arg0, String arg1) {
int result = arg0.length() - arg1.length();
return result;
}
}
//运行结果
最小的元素为:blue
最大的元素为:yellow
length最小的元素为:red
length最大的元素为:yellow
二、如何去除list(存储元素如下)集合中重复的元素并排序
List list = new ArrayList();
list.add(“1”);
list.add(“1”);
list.add(“22”);
list.add(“2”);
list.add(“3”);
list.add(“31”);
list.add(“3 1”);
list.add("");
list.add(“0”);
list.add("\t");
package day19;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class List1 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("1");
list.add("22");
list.add("2");
list.add("3");
list.add("31");
list.add("3 1");
list.add("");
list.add("0");
list.add("\t");
List1.getDistinctList(list);
System.out.println("使用set排序后的结果:" + list);
}
/**
* 对list集合进行去重排序
* @param list
*/
public static void getDistinctList(List<String> list) {
//首先实现一个set接口
Set<String> set = new HashSet<String>();
//将list集合中的内容通过addAll方法全部添加到set集合中,并利用set集合不可存储重复元素的特性去重
set.addAll(list);
//清空原本的list集合
list.clear();
//可以将去重后的set集合的元素,再次添加到list集合中去
list.addAll(set);
//调用Collections接口的sort排序方法
Collections.sort(list);
}
}
//运行结果
使用set排序后的结果:[, , 0, 1, 2, 22, 3, 3 1, 31]
三、写一个Student类, 包含属性code[1-30), grade[1-6], score[0-100], 所有属性都是随机生成(Math.random()方法,返回一个范围[0,1)的随机数)
要求保存这二十位同学的信息,学号(code)不得相同, 并找出分数最高的同学和分数最低的同学, 最后打印输出最高分和最低分同学信息.
package day19;
public class Student implements Comparable<Student>{
private int code;
private int grade;
private int score;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public Student(int code, int grade, int score) {
super();
this.code = code;
this.grade = grade;
this.score = score;
}
@Override
public String toString() {
return "Student [学号=" + code + ", 年级=" + grade + ", 分数=" + score + "]";
}
@Override
public int compareTo(Student o) {
int result = this.score - o.getScore();
return result;
}
}
package day19;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Test {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
Set<Integer> set = new HashSet<Integer>();
//将学号添加进set集合中,s并保证set集合的大小不超过20
while(set.size() < 20) {
//获得学号的随机数[1,30)
//范围大的数据强制给范围小s的数据进行赋值,会出现精度的缺失
int code = (int)(Math.random() * 29 + 1);//[0,1)
set.add(code);
}
for(int code : set) {
int grade = (int)(Math.random() * 6 + 1);
int score = (int)(Math.random() * 100 + 1);
list.add(new Student(code, grade, score));//匿名对象
}
for(Student stu: list) {
System.out.println(stu);
}
Collections.sort(list);
System.out.println("分数最低的同学:" + list.get(0));
System.out.println("分数最高的同学:" + list.get(list.size() - 1));
}
}
//运行结果
Student [学号=2, 年级=6, 分数=53]
Student [学号=4, 年级=6, 分数=15]
Student [学号=7, 年级=6, 分数=22]
Student [学号=9, 年级=4, 分数=7]
Student [学号=10, 年级=1, 分数=91]
Student [学号=11, 年级=1, 分数=40]
Student [学号=12, 年级=1, 分数=68]
Student [学号=13, 年级=3, 分数=6]
Student [学号=14, 年级=3, 分数=17]
Student [学号=15, 年级=3, 分数=77]
Student [学号=16, 年级=5, 分数=74]
Student [学号=17, 年级=2, 分数=8]
Student [学号=19, 年级=5, 分数=30]
Student [学号=20, 年级=6, 分数=23]
Student [学号=21, 年级=1, 分数=28]
Student [学号=22, 年级=3, 分数=76]
Student [学号=24, 年级=3, 分数=27]
Student [学号=25, 年级=5, 分数=64]
Student [学号=26, 年级=4, 分数=95]
Student [学号=29, 年级=3, 分数=16]
分数最低的同学:Student [学号=13, 年级=3, 分数=6]
分数最高的同学:Student [学号=26, 年级=4, 分数=95]
package day20;
import java.util.HashSet;
import java.util.Set;
public class Test2 {
public static void main(String[] args) {
//红球号码集合
Set<Integer> redBallSet = new HashSet<Integer>();
//蓝球号码集合
int blueBall = (int)(Math.random() * 16 + 1);
while(redBallSet.size() < 6) {
int redBall= (int)(Math.random() * 33 + 1);
redBallSet.add(redBall);
}
System.out.println("红球:" +redBallSet + " 蓝球:"+ blueBall);
}
}
//运行结果
红球:[16, 1, 26, 12, 28, 15] 蓝球:5