第一个问题楼上几位的回答我想你已经清楚了,那我来回答你这个问题,
Set集合是无序的,能不能通过排序让Set集合实现元素的存入顺序与取出顺序一致?
只要我们重写了TreeSet的compareTo方法,就可以实现。
我们知道TreeSet存入方式是以二叉树的形式,调用底层的compareTo方法,当返回1时大于,0相等,-1小于。
我们知道取出的时候他是按照从小到大取出的,那我们自定义比较方法,让后面存入的数总是大于前面存入的数,就可以了。
也就是说compareTo方法里总是return 1;- import java.util.*;
- class TreeSet3
- {
- public static void main(String[] args)
- {
-
- TreeSet ts = new TreeSet();
- ts.add(new Demo("abcd"));
- ts.add(new Demo("cc"));
- ts.add(new Demo("cba"));
- ts.add(new Demo("z"));
- ts.add(new Demo("z,,,"));
- ts.add(new Demo("hahaha"));
- //这里随便改顺序,后面就按什么顺序输出。
-
- Iterator it = ts.iterator();
- while (it.hasNext())
- {
- Demo d = (Demo)it.next();
- System.out.println("d:"+d.getName());
- }
- }
- }
- class Demo implements Comparable//该接口强制让对象具备比较性
- {
- private String name;
- Demo(String name)
- {
- this.name = name;
- }
- public String getName()
- {
- return name;
- }
- public int compareTo(Object obj)
- {
- return 1;//返回1,大于, 关键点!!!
- //改为-1,就是反顺序输出
- }
- }
复制代码 |