CompareTo方法与list相当

时间:2015-05-04 08:59:10

标签: java comparable compareto

我已经写了这个问题的答案,但是在Netbeans上它显示了这一行的错误:

        if (key.compareTo(obj) <= 1) 

问题是: 编写一个静态方法,它接受一个具有自然顺序的对象列表或一组对象 List或Set的基类型,以及整数n,如果至少有n个对象,则返回true List或Set根据其自然顺序大于object参数false 否则。

我的尝试:

public static <T extends Comparable<? super T>> boolean question9(List<T> list, List obj, int n) {

            int count = 0;
            for (T key : list) {
                if (key.compareTo(obj) <= 1) {
                    count++;
                }
            }
            if (n > count) {
                return false;
            } else {
                return true;
            }
        }

1 个答案:

答案 0 :(得分:1)

你的作业说(强调我的):

  

编写一个静态方法,该方法接受具有自然顺序的List或一组对象, List或Set的基本类型的对象

这并不意味着objListSet!这意味着obj必须是T

另外,你的测试不好。 Comparable合约表示,对于两个对象xy,如果x大于0,则y被视为大于x.compareTo(y)。 / p>

因此请将测试更改为:

if (key.compareTo(obj) > 0)

此外,您的最终测试可以简化为:

return count >= n;

你甚至可以快捷方式:

public static <T extends Comparable<? super T>> boolean question9(
    final Collection<T> collection, // assignment says List or Set
    final T obj, int n)
{
    int count = 0;
    for (final T element: collection) {
        if (element.compareTo(obj) <= 0)
            continue;
        if (++count >= n)
            return true;
    }
    return false;
}