检查列表是否包含指定项目以外的项目的最佳方法是什么?

发布于 2025-01-11 10:03:16 字数 237 浏览 0 评论 0原文

假设我有一个列表,我想搜索一个值为“apple”的项目。

List<String> items = new Arraylist<>():

如果 items 包含除所提到的项目(“apple”)之外的至少一个元素,我想返回 false,如果列表中的所有项目都返回 true列表是“苹果”。

Lets say I have a list and I want to search for an item with value “apple”.

List<String> items = new Arraylist<>():

I want to return false if items contains at least one element other than the item mentioned (“apple”), true if all items in the list are “apples”.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

活泼老夫 2025-01-18 10:03:16

这是一句俏皮话:

return items.stream().anyMatch(s -> !s.equals("apple"));

或者很可爱,但不太明显:

return items.stream().allMatch("apple"::equals);

Here's a one-liner:

return items.stream().anyMatch(s -> !s.equals("apple"));

or cute but a little less obvious:

return items.stream().allMatch("apple"::equals);
春庭雪 2025-01-18 10:03:16

使用Stream IPA,您可以通过使用终端操作allMath() 需要一个谓词 em>(函数表示为布尔条件)并检查流中的所有元素是否与给定的谓词匹配。

代码如下所示:

public static void main(String[] args) {
    List<String> items1 = List.of("apple", "apple", "apple"); // expected true
    List<String> items2 = List.of("apple", "orange"); // expected false

    System.out.println(items1.stream().allMatch(item -> item.equals("apple")));
    System.out.println(items2.stream().allMatch(item -> item.equals("apple")));
}

输出

true
false

With Stream IPA you can achieve that by using terminal operation allMath() that takes a predicate (function represented by boolean condition) and checks whether all elements in the stream match with the given predicate.

The code will look like that:

public static void main(String[] args) {
    List<String> items1 = List.of("apple", "apple", "apple"); // expected true
    List<String> items2 = List.of("apple", "orange"); // expected false

    System.out.println(items1.stream().allMatch(item -> item.equals("apple")));
    System.out.println(items2.stream().allMatch(item -> item.equals("apple")));
}

output

true
false
他是夢罘是命 2025-01-18 10:03:16

我使用python,但是,我认为是这样的:

list_entrance = input()

new_list = []

for循环在list_entrance中:
如果循环!=“苹果”:
打印(“法尔塞”)
别的:
继续

如果您愿意,当然可以在“new_list”中“追加”项目。
我不知道你的任务的全部情况。

I use python but, I think is something like that:

list_entrance = input()

new_list = []

for cycle in list_entrance:
if cycle != "apple":
print("falce")
else:
continue

If you want of course you can "append" a items in "new_list".
I don't know full condition on your task.

小女人ら 2025-01-18 10:03:16

只是说你的 ArrayList 应该这样定义:

List items = new ArrayList<>();

你错过了问题中的一些大写字母。

对于解决方案,您可以循环遍历列表并检查:

for (int x = 0; x<items.size(); x++){
    if (! items.get(x).equals("apple")){
        return false;
    } 
}
return true;

Just to say your ArrayList should be defined like this:

List items = new ArrayList<>();

You missed out some caps in the question.

For the solution you could just loop through the list and check:

for (int x = 0; x<items.size(); x++){
    if (! items.get(x).equals("apple")){
        return false;
    } 
}
return true;
辞取 2025-01-18 10:03:16

而是使用 Set,为了不出现重复的项目。

Collectors 还可以返回 Set

Set<String> distinct = list.stream().collect(Collectors.toSet());

Instead use a Set, in order not to have duplicate items.

Collectors can also return Set:

Set<String> distinct = list.stream().collect(Collectors.toSet());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文