java - 检查 ArrayList 是否包含另一个 ArrayList 中的所有字符串

标签 java list arraylist

我需要检查 ArrayList 中的所有字符串是否都存在于另一个 ArrayList 中。我可以使用 containsAll 但这不是我想要实现的目标。让我通过示例向您展示这一点:

assertThat(firstArray).containsAll(secondArray);

此代码将检查一个数组中的所有项目是否都在另一个数组中。但我需要检查一个数组中的每个项目是否包含在第二个数组中的任何位置。

List<String> firstArray = new ArrayList<>;
List<String> secondArray = new ArrayList<>;
firstArray.add("Bari 1908")
firstArray.add("Sheffield United")
firstArray.add("Crystal Palace")

secondArray.add("Bari")
secondArray.add("Sheffield U")
secondArray.add("C Palace")

所以我想检查 secondaryArray 中的第一项是否位于 firstArray(true) 中,而不是 second(true)third(false) >。我编写了完成这项工作的代码,但它非常复杂,我想知道是否有更简单的方法来实现这个目标(也许使用 hamcrest 匹配器或类似的东西)

ArrayList<String> notMatchedTeam = new ArrayList<>();
for (int i = 0; i < secondArray.size(); i++) {
    String team = secondArray.get(i);
    boolean teamMatched = false;
    for (int j = 0; j < firstArray.size(); j++) {
        teamMatched = firstArray.get(j).contains(team);
        if (teamMatched) {
            break;
        }
    }
    if (!teamMatched) {
        notMatchedTeam.add(team);
    }
}

最佳答案

你可以做这样的事情

     List<String> firstArray = new ArrayList<>();
            List<String> secondArray = new ArrayList<>();
            firstArray.add("Bari 1908");
            firstArray.add("Sheffield United");
            firstArray.add("Crystal Palace");

            secondArray.add("Bari");
            secondArray.add("Sheffield U");
            secondArray.add("C Palace");

           Set<String> firstSet= firstArray
                    .stream()
                    .collect(Collectors.toSet());

         long count=  secondArray.stream().filter(x->firstSet.contains(x)).count();

///
  Map<String, Boolean> result =
                secondArray.stream().collect(Collectors.toMap(s->s, firstSet::contains));

如果 count >0,则第二个数组中有一些项目在第一个数组中不存在。

结果包含字符串及其状态。

谢谢

关于java - 检查 ArrayList 是否包含另一个 ArrayList 中的所有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43389460/

相关文章:

java - 匹配的通配符是严格的,但是找不到元素的声明

java - 如何创建包含 ArrayLists 的二维数组?

php - 使用 php mysql 的可编辑列表

python - 如何根据列表中类的属性使 Python 中的列表不同?

java - 从 ArrayList 中排除元素

java - java中ArrayList转Hashset

java - 如何让 onStart() 方法等到 onCreate() 方法完成

java - JAX-WS 为 IBM websphere、IBM Web 服务客户端添加寻址

java - 日期选择器不适用于 API 26

python - 返回树中的值列表