集合排序

一、在一个列表中存储以下元素: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

你可能感兴趣的:(集合排序)