TreeSet的使用

文章描述:-2022年2月18日发(作者:差异class)TreeSet是依靠TreeMap来实现的 TreeSet是一个有序集合,她的元素 按照升序排列,默认是按照自然顺序排列,也就是说TreeSet中的对象元素需要实现Comparable接口。 TreeSet类中跟HashSet类一样也没有get()方法来获取列表中的元素,所以也只能通过迭代器方法来获取。 Java代码 public class Tr

-

TreeSet的使用 2022年2月18日发(作者:差异class)

TreeSet是依靠TreeMap来实现的

TreeSet是一个有序集合,她的元素 按照升序排列,默认是按照自然顺序排列,也就是说TreeSet中的对象元素需要实现Comparable接口。

TreeSet类中跟HashSet类一样也没有get()方法来获取列表中的元素,所以也只能通过迭代器方法来获取。



Java代码

public class TreeSetTest

{

public static void main(String[] args)

{

TreeSet tr =new TreeSet();

("zhangshan");

("wangwu");

("lisi");

Iterator it =or();

while(t())

{

n(());

}

}

}





输出结果为:lisi wangwu zhangshan

这是因为TreeSet是一个有序并且默认按自然顺序排列,而不像哈希表那样毫无规律。



当然,你也可以在创建TreeSet对象时传递一个比较器来实现你自己的排序方式:

Java代码

import .*;

public class TreeSetTest

{

public static void main(String[] args)

{

//传递一个比较器来实现你自己的排序方式

TreeSet tr =new TreeSet(new tComparator());

(new Student(3,"wnagwu"));

(new Student(2,"zhangshan"));

(new Student(2,"lisi"));

(new Student(1,"xiejin"));

Iterator it =or();

while(t())

{

n(());

}

}

}





Student类:

Java代码

class Student implements Comparable,Comparator

{

int num;

String name;

Student(int num,String name)

{

=num;

=name;

}

public int compareTo(Object o)

{

Student st =(Student)o;

int result;

result= num>?1:(num==?0:-1);

//如果学号相等,就按姓名排列

/*if(result==0)

{

return eTo();

}*/

return result;

}

//实现Comparator接口并实现它的抽象方法

public int compare(Object o1,Object o2)

{

Student st1 =(Student)o1;

Student st2 =(Student)o2;

return eTo();



}

//重写toString()方法,因为如果不重写,打印出来的是16进制代码

public String toString()

{

return "num="+num+"; name="+name;

}

public static class StudentComparator implements Comparator

{

public int compare(Object o1,Object o2)

{

Student st1 =(Student)o1;

Student st2 =(Student)o2;



int result;

result=>?1:(==?0:-1);

if(result==0)//如果学号相等 就进行名字排序

{

result=eTo();

}

return result;

}

}

}





上面如果只使用学号排序,那么学号相同的就不会被打印的。

-

TreeSet的使用

发布时间:2022-02-18 23:38:40
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 13 条评论,126人围观)