如何创建一个方法来检查链表是否包含大于参数的任何数字?
我们说我们有链表
[ 8 7 1 3 ]
。这将返回true
和
[ 10 12 3 2]
会返回false
。
这会有用吗?
public boolean f(int k) {
for (int=0; int<linkedList.size(); i++) {
if (linkedList.get(i)>k)
return false;
}
else
return true;
}
另外,我需要提一下,此方法不会以任何方式更改列表,如果列表包含null元素,它仍然可以工作。
谢谢!
答案 0 :(得分:4)
使用Java 8
public boolean f(int k) {
return !linkedList.stream().anyMatch(i-> i> k );
}
澄清:我假设您希望在方法中返回false,即使单个元素高于给定的k
。因此我使用anyMatch,因为我们只需要寻找一个更高的元素。没有必要遍历整个列表。
答案 1 :(得分:1)
这不会影响您目前的使用方式。您需要在返回之前循环遍历整个列表。你应该提前返回的唯一时间是你在这种背景下找到return false
的理由。所以将你的return true
移到你的循环之外然后你就没事了。
另外,尝试为您的方法和类定义赋予意义。说obj.f(12)
并没有多说,而obj.noElementGreaterThan(12)
说的更多。
例如:
public boolean noElementGreaterThan( int k ) {
for( int i = 0; i < linkedList.size(); i++ )
{
if( linkedList.get(i) > k )
return false;
}
return true;
}
这个工作的原因是因为它将遍历整个对象列表,将每个对象与传入的值(k
)进行比较。如果该值大于k
,那么它将return false
,这意味着它的元素大于k
。
答案 2 :(得分:0)
使用你可以这样做的流:
public boolean f(int k) {
List<Integer> filtered = linkedList.stream().filter(i -> i > k).collect(Collectors.toList());
return !filtered.isEmpty();
}