class UnfairContainer<T> implements Comparable<UnfairContainer>
{
private ArrayList<T> array = new ArrayList<T>();
public void sort()
{
Collections.sort(array);
}
public int compareTo(UnfairContainer o)
{
}
}
因此,我有实现comparable的类,但当我试图创建调用Collections.sort()的排序方法时,它给出了一个错误,说明我不能用ArrayList调用collection sort。有人能帮忙吗?并且帮助我使用compareTo方法,我仍然停留在如何比较ArrayList中的每个元素上
问题是不能保证列表是可排序的。这是因为在当前的设置下,t
可以是任何东西--包括一个不实现comparable
的类,因此不能按集合
排序。collections.sort()
的类型签名反映了这一点:
public static <T extends Comparable<? super T>> void sort(List<T> list);
要解决这个问题,您需要为T设置一个上限,以确保它是可排序的:
class UnfairContainer<T extends Comparable<T> >
implements Comparable<UnfairContainer<T> >
{
...
T extends comparable
意味着T必须是实现comparable的类。这让集合知道ArrayList是可以排序的,并且一切都正常工作。
问题内容: 在我正在使用的代码下面,可以正常工作并输出名称,但不能使用sort方法。我期望“ Collections.sort(nameFromText);” 按名字的字母顺序对ArrayList进行排序。 我究竟做错了什么? 问题答案: 方法期望要排序的列表元素具有可比性。元素类型应该实现接口,或者您应该使用带有通用实例的重载方法。 在下面的代码中,您不满足上述两个条件。您的类既没有实现,也没有
下面我使用的代码工作正常,并输出名称,但排序方法不起作用。我需要“Collections.sort(nameFromText);”按名字的字母顺序对ArrayList排序。 我做错了什么?
问题内容: 对于这个愚蠢的问题,我感到抱歉,我一直在搜索如何在我的ArrayList中使用binarysearch,如下所示: 问题是当我使用时: indeks的值始终为-5,我认为应该为2,因为在反转myArrList之后,输出看起来像这样: 那么,在这里我该怎么做才能获得7的正确债款?提前致谢 问题答案: 期望元素按升序排列: 在进行此调用之前,必须根据列表元素的自然顺序将其按升序排序(例如通
问题内容: 如果我有一个简单的字符串列表: 我可以对它进行排序: 但是假设我有一个Person类: 并列出: 我想有时按名称,有时按年龄,有时按国家对它进行排序。 最简单的方法是什么? 我知道我可以实现Comparable接口,但这似乎限制了我只能通过一个特定的属性对其进行排序。 问题答案: 可以使用自定义比较器调用Collections.sort。并且该比较器可以实现为允许以不同的排序顺序进行排
我有一个,其中具有字符串值,其中包含名称,然后将double转换为字符串。
我需要整理一份arrayList。我可以使用比较器并重写比较函数进行排序。或者我可以自己编写一个合并排序函数,对ArrayList进行排序。 我在某处读到比较器排序使用冒泡排序算法。因为合并排序的复杂度较低,所以我选择合并排序,而不是使用更容易实现的比较器。