为什么last()和first()方法在java中的Set Interface中不存在

时间:2017-09-06 04:54:54

标签: java

我试图使用下面的代码创建一个TreeSet实例。

get

这里有什么?提前谢谢。

7 个答案:

答案 0 :(得分:4)

由于您需要SortedSet界面的方法,请将treeSet的类型更改为SortedSet

SortedSet<Integer> treeSet = new TreeSet<>();
treeSet.last(); 

答案 1 :(得分:3)

Set interface没有这些方法。其他数据结构(如HashSet)实现Set接口,但它们不保证顺序,因此这些方法没有用处。

您可以使用该类而不是接口

TreeSet<Integer> treeSet = new TreeSet<>();

答案 2 :(得分:1)

设置数据结构行为不适用于排序元素。所以SET没有这些方法。 Treeset是实现此功能的中间方式,因为它具有通过融合

实现的排序机制
  

设置+红黑树

数据结构。

SortedSet是另一个为此目的而开发的实现。

使用

进行
SortedSet<Integer> set = new TreeSet<>();
set.last();

答案 3 :(得分:0)

Set Interface没有first()&amp; last()方法,所以使用TreeSet类型

import java.util.TreeSet;

public class Main {
    public static void main(String[] args) {
        TreeSet<Integer> treeSet = new TreeSet<>();
        treeSet.last();
    }
}

答案 4 :(得分:0)

集合表示不包含重复元素的集合。因此,接口只允许get set和iterate操作。

为了您的目标,继续使用TreeSet(实现SortedSet)

treeSet

答案 5 :(得分:0)

在您的代码Set中,first类型没有lastTreeSet<Integer> treeSet = new TreeSet<>(); treeSet.last() //gives compilation error //solution here is either to cast the treeSet instance //Or create treeSet using TreeSet concrete class. Which is not a best practice. 方法。如果您将使用TreeSet,您将可以访问这些方法:

->diffForHumans()

答案 6 :(得分:0)

iterator()接口是一个不被认为是有序的集合。虽然这在课堂上并不明确,但它完全取决于班级的方法,例如: first

  

返回此set中元素的迭代器。元素以无特定顺序返回(除非此集合是某个提供保证的类的实例)。

要获得lastSortedSet,您需要订单或索引,而Set则不需要。正如许多其他人已经指出的那样,如果您想要订单,可以使用TreeSet

SortedSet实现SortedSet<Integer> treeSet = new TreeSet<>(); treeSet.last(); ,因此您当然可以将提供的代码修改为:

$row