簡體   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