A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵耿 中级黑马   /  2015-3-13 12:20  /  1292 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想求教大神们,在TreeMap和TreeSet中,如果想取出的字符串元素顺序是其存入的顺序,而不是其本身的自然顺序,怎么实现呢?或者说,它的比较器应该怎么构造呢?

2 个回复

倒序浏览
  1. public class Test {

  2.         public static void main(String[] args) {
  3.                
  4.                 TreeSet ts=new TreeSet(new Comparator() {

  5.                         public int compare(Object o1, Object o2) {
  6.                                 return 1;//1表示后面的比前面大,按传入顺序排序
  7.                         }
  8.                 });
  9.                
  10.                 ts.add("1");
  11.                 ts.add(1);
  12.                 ts.add(false);
  13.                 ts.add("b");
  14.                 ts.add("a");
  15.                 System.out.println(ts);
  16.         }

  17. }
复制代码
回复 使用道具 举报
TreeMap基于红黑树(Red-Black tree)实现的,该映射根据其键的自然顺序进行排序,创建映射时提供的 Comparator 进行排序,TreeMap(Comparator<? super K> comparator)。TreeSet使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,TreeSet(Comparator<? super E> comparator)  ;TreeSet可以通过Iterator取出值,TreeMap可以根据get(key)取出相对应的值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马