我已经写了这个问题的答案,但是在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;
}
}
答案 0 :(得分:1)
你的作业说(强调我的):
编写一个静态方法,该方法接受具有自然顺序的List或一组对象, List或Set的基本类型的对象
这并不意味着obj
是List
或Set
!这意味着obj
必须是T
。
另外,你的测试不好。 Comparable
合约表示,对于两个对象x
和y
,如果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;
}