java - 检查列表是否包含相同的对象

标签 java arrays list

我有两个已填写的列表。 第一个列表包含例如:

"Shoppinglist-fruit", "Shoppinglist-drinks", "Shoppinglist-dinner"

第二个列表包含:

"Shoppinglist-drinks"

现在我想打印第一个列表中的所有项目,除非第二个列表中存在具有相同名称的相同对象(购物 list 饮料)。 看起来像: “购物 list -水果”,“购物 list -晚餐”

那么我如何检查第二个列表中的对象名称是否也在第一个列表的对象之一中。 最终我想得到一个字符串,其中包含第一个列表中而不是第二个列表中的所有购物 list 的名称。 我从下面的一些代码开始,但无法完成它。

我有两个列表,一个称为 listShoppinglists,这是一个充满不同购物 list 的列表。 第二个 list 是某人的购物 list 。 所以我想检查购物 list 的名称是否相同。 如果这样做的话。

public String getAllShoppingLists(List listShoppinglists, Customer customer, List shoppinglists) { 
String namesOfTheShoppingListNames = ""
for (Shoppinglist shoppinglist : listShoppinglists) {
       for (int i = 0; i < customer.shoppinglists.size(); i++) {
           if (customer.shoppinglists.get(i).getName().equals(shoppinglist.getName())) { 
    // Some action here    
           } 
       }    
    } 
return namesOfTheShoppingListNames;
}

最佳答案

你可以试试这个:

    List<ShoopingList> firstShoppingListNames = new ArrayList<>();
    firstShoppingListNames.add(new ShoppingList("fruit"));
    firstShoppingListNames.add(new ShoppingList("dinner"));
    firstShoppingListNames.add(new ShoppingList("juice"));
    List<ShoppingList> secondShoppingListNames = new ArrayList<>();
    secondShoppingListNames.add(new ShoppingList("fruit"));


    List<ShoppingList> distinct = firstShoppingListNames.stream().
            filter( list -> secondShoppingListNames.stream().
            noneMatch(o -> o.getName().equals(list.getName()))).
            collect(Collectors.toList());

    distinct.forEach(o -> System.out.print(o.getName()));

在这种情况下,您正在使用流来实现您想要的。您过滤第一个列表以获取其他列表中不存在的元素。

此外,如果您只想获取这些列表的名称,您可以使用 map :

    List<String> distinct = firstShoppingListNames.stream().
             filter( list -> secondShoppingListNames.stream().
             noneMatch(o -> o.getName().equals(list.getName()))).
             map(ShoppingList::getName).collect(Collectors.toList());

关于java - 检查列表是否包含相同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41486929/

相关文章:

java - 如何编写一个删除方法来从数组列表中删除对象

在 C : dynamically handling memory 中连接一个 char 数组

java - 在 Java 中读取 ini 文件时出现问题

c++ - 如何声明一个函数数组?

java - 旋转对象以放置在二维数组中

arrays - Haskell - 检查二维列表的行数是否与列数相同

c# - 在没有自动 setter / getter 的情况下在 C# 中设置列​​表项

Java:有什么类似于数组的数组列表吗?

java - JML 替代品

java - 具有同步块(synchronized block)的 Java 内存模型中单例的弱点