TreeSet类知识点

TreeSet类是Set接口的一个实现类,主要作用是用于对对象的排序以及确定存入对象的唯一性。给对象排序的方式有很多,比如一些基本类型int、String等类型就已经提供了很多排序的方法了,但是这并不说明TreeSet类就没有什么用了。在一些时候我们需要自定义一些类,同时需要对这个类的对象进行排序,那么这个时候我们就可以通过这个TreeSet类去自定义一个排序的条件。

本次有5名学生参加考试,当老师录入每名学生的成绩后,程序将按照从低到高的排列显示成绩。 此外, 老师可以查询本次考试是否有满分的学生存在,不及格的成绩有哪些,90分以上成绩的学生有几名。
下面使用TreeSet类来创建Set集合,完成学生成绩查询功能。具体的代码如下:

import java.util.Iterator;
import java.util.Scanner;
import java.util.SortedSet;
import java.util.TreeSet;

public class TEST {

	public static void main(String[] args) {
      TreeSet<Double>scores =new TreeSet <Double>();  //创建了一个TreeSet集合对象scores
	  Scanner input=new Scanner(System.in);	
	  System.out.println("成绩如下:");
	  for (int i = 0; i < 5; i++) {
		System.out.println("第"+(i+1)+"个学生的成绩");
	   
		double  score =input.nextDouble();
	    scores.add(Double.valueOf(score));
	}
		Iterator<Double> it =scores.iterator(); //创建iterator对象
		System.out.println("成绩从低到高的排序为:");

		while(it.hasNext()) {
			System.out.println(it.next()+"\t");
		}
	 System.out.println("\n请输入需要查询的成绩:");
	 Double search =input.nextDouble();
	 if (scores.contains(search)) {  
		System.out.println("存在该成绩!");
	}
	 else {
		System.out.println("\n不存在该成绩!");
	}
	 SortedSet<Double> score1=scores.headSet(60.0);
	 System.out.println("\n不及格的成绩有:");
	 for (int i = 0; i < score1.toArray().length; i++) {
		System.out.println(score1.toArray()[i]+"\t");
	}
	 System.out.println("\n90分以上的成绩有:");
	 SortedSet<Double> score2=scores.tailSet(90.0);
	 for (int i = 0; i < score2.toArray().length; i++) {
		System.out.println(score2.toArray()[i]+"\t");
	}
	}

}

程序运行结果如下:
在这里插入图片描述
如上述代码,首先创建一个TreeSet 集合对象scores并向该集合中添加5个Double对象。接着使用while循环遍历scores集合对象,输出该对象中的元素,然后调用TreeSet类中的contains()方法获取该集合中是否存在指定的元素。最后分别调用TreeSet类中的headSet()方法和tailSet()方法获取不及格的成绩和90分以上的成绩。

注意:

在使用自然排序时只能向TreeSet集合中添加相同数据类型的对象,否则会抛出ClassCastException异常。如果向TreeSet集合中添加了一不Double类型的对象,则后面只能加Double对象,不能再添加其他类型的对象,例如String对象等。

附1
TreeSet类的常用方法:
在这里插入图片描述

附二
TreeSet类的常用构造方法:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

发布了10 篇原创文章 · 获赞 3 · 访问量 2894

猜你喜欢

转载自blog.csdn.net/SUNYAN_WADE/article/details/104578770