天天看点

集合框架(三) Set&HashSet

java集合中Set接口

集合框架(三) Set&HashSet

实例1:

声明一个Set集合,只能保存Double类型的数据, 保存10个随机100以内的数, 找出最大值和最小值,打印输出. 

public class Ch01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Set<Double> set = new HashSet<>();
		
		for(int i = 0;i < 10;i++){
			set.add(Math.random()*100);
		}
		double min = 100;
		double max = 0;
		Iterator iter = set.iterator();
		
		while(iter.hasNext()){
			double r = (double) iter.next();
			System.out.println(r);
			
			if(r < min){
				min = r;
			}
			if(r>max){
				max = r;
			}
		}
		System.out.println("最大值是:"+max);
		System.out.println("最小值是:"+min);	
	}
}
           

实例2:

写一个Student类, 包含属性id[1-30), grade[1-6], score[0-100], 所有属性都是随机生成  ,创建一个Set集合, 保存20个对象, 如果两个对象的id是一样的,则不允许添加.  使用迭代器遍历集合,打印输出对象的信息, 并找出分数最高的同学和分数最低的同学, 最后打印输出最高分和最低分同学信息.

Student类:

public class Student {

		private int id;
		private int grade;
		private int score;
		public Student(int id, int grade, int score) {
			super();
			this.id = id;
			this.grade = grade;
			this.score = score;
		}
		public int getId() {
			return id;
		}
		public void setId(int id) {
			this.id = id;
		}
		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;
		}
}
           

Test测试类:

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Set<Student> set =  new HashSet<>();
		do{
			int id = (int) (Math.random()*29+1);
			int grade = (int) (Math.random()*6+1);
			int score = (int) (Math.random()*100);
			if(!set.contains(id)){
				Student stu = new Student(id, grade, score);
				set.add(stu);
			}
		}while(set.size()<20);
		Iterator iter = set.iterator();
		System.out.println("id\tgrade\tscore");
		int min = 100,max = 0;
		while(iter.hasNext()){
			Student s = (Student)iter.next();
			System.out.println(s.getId()+"\t"+s.getGrade()+"\t"+s.getScore());
			if(max<s.getScore()){
				max=s.getScore();
			}
			if(min>s.getScore()){
				min=s.getScore();
			}
		}
		System.out.println("最高分是"+max);
		System.out.println("最低分是"+min);
	}

}