Java:SortedMap,TreeMap,可比吗?如何使用?

我有一个对象列表,我需要根据其字段之一的属性对其进行排序。我听说SortedMap和Comparators是执行此操作的最佳方法。

  1. 我要对正在排序的类实施Comparable,还是创建一个新类?
  2. 如何实例化SortedMap并传递比较器?
  3. 排序如何进行?当插入新对象时,它会自动对所有内容进行排序吗?

这段代码给我一个错误:

private TreeMap<Ktr> collection = new TreeMap<Ktr>();

(Ktr工具Comparator<Ktr>)。Eclipse表示期望类似TreeMap<K, V>,因此我提供的参数数量不正确。

回答:

  1. 比较简单的方法是Comparable使用现有对象来实现,尽管您可以创建一个Comparator并将其传递给SortedMap

    注意ComparableComparator是两个不同的事物;一个实现的类与另一个对象Comparable进行比较this,而一个实现的类则Comparator

    其他 两个对象进行比较。

  2. 如果实现Comparable,则不需要将任何特殊的东西传递给构造函数。只需致电new TreeMap<MyObject>()。( 当然Maps需要两个通用参数,但不是一个。愚蠢的我!)

    如果您创建另一个实现的类Comparator,则将该类的实例传递给构造函数。

  3. 是的,根据TreeMapJavadocs的说法。


在重新阅读问题时,这都没有道理。如果您已经有了列表,则明智的做法是实施Comparable并调用Collections.sort它。无需地图。

一些代码:

public class MyObject implements Comparable<MyObject> {

// ... your existing code here ...

@Override

public int compareTo(MyObject other) {

// do smart things here

}

}

// Elsewhere:

List<MyObject> list = ...;

Collections.sort(list);

与一样SortedMap,您可以创建一个Comparator<MyObject>并将其传递给Collections.sort(List,

Comparator)

以上是 Java:SortedMap,TreeMap,可比吗?如何使用? 的全部内容, 来源链接: utcz.com/qa/412909.html

回到顶部