关于TreeSet中数据有序的理解

  • 在java语言的TreeSet会对存储在其中的数据进行自动的排序,这个概念与数据结构中的二叉排序树类似,通过二叉排序树对数据进行存储然后通过中序遍历取出的数据是从小到大排序
  • 如果向TreeSet集合中存入数据的顺序为
  • “C”,“A”,"B",“E”,“F”,“D”
  • 那么当你对集合进行遍历取出数据的时候会发现数据的顺序变为了A B C D E   那么这是怎么实现的呢
  • 对于基本的数据类型。比如Integer或者是String ,在你把数据添加进去之后,TreeSeth会按照这个类的compareTo方法进行排序,这时候不需要大家进行额外的工作,只是把数据存进去就好了
  • 但是在实际的应用中往往不是这么简单,如果存入的是一些没有实现compareTo方法的类,比如你自己定义的类,那么集合怎样进行排序呢?
  • 这里一般有两种方法         假如存储的数据为 TreeSet t=new  TreeSet(); 
  1. 方法一       Student类中的成员变量有学号,年龄,姓名,那么你需要在学生类中implements Comparator接口中的方法compare  或者 implements Comparable接口 然后重写其中的compareTo方法 ,指定出你想要的排序规则
  2. 方法二
    TreeSet ts=new TreeSet(new Comparator() {
    
    			@Override
    			public int compare(student o1, student o2) {
    				int num=o1.age-o2.age;
    				int num2=num==0?o1.number-o2.number:num;
    				return num2;
    			}
    		});
    在对TreeSet进行实例化的时候,在构造函数中 通过匿名内部类 重写其中的compare方法,在其中指定出具体的排序方法,在方法二中指定的顺序为先按照年龄排序,年龄一样时再按照学号进行排序

你可能感兴趣的:(关于TreeSet中数据有序的理解)