繁体   English   中英

TreeSet排序顺序混乱

[英]TreeSet Sorting Order Confusion

我知道 Java 中的 TreeSet 按升序对其元素进行排序。 对于 integer,它将是 1、2、3、4、5,对于字符串,它将是按字母顺序排列的。 但是,如果我想在那个 TreeSet 中输入对象,默认情况下它是如何排序的呢?

object 必须实现Comparable

class MyObject implements Comparable<MyObject>
{
  int value;

  MyObject(int value)
  {
    this.value=value;
  }

  //Sorting order controlled here
  @Override
  public int compareTo(MyObject m)
  {
    return Integer.compare(this.value,m.value);
  }
}

TreeSet<MyObject> set=new TreeSet();
//add stuff here

或者您提供自己的Comparator 使用 lambda 表达式与 java 7 及以上

TreeSet<MyObject> set=new TreeSet((obj1,obj2)->Integer.compare(obj1.value,obj2.value));

Comparator 优先于 Comparable 并且您的 object 不需要实现 Comparable 这对于不实现接口的 3rd 方库很有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM