首页 > 解决方案 > 如何将arraylist的多个项目与特定位置的另一个arraylist进行比较?

问题描述

背景:有产品列表页面,我必须获取所有产品名称(包括缺货产品),然后必须验证所有缺货产品到底是什么。

问题:我浏览了所有页面并将产品名称存储在 ArrayList 中。

可以说list1,内容是-

[instant bcaa, vegan bcaa, complete bcaa energy™, branched chain amino acid (bcaa) tablets 1000mg, endure™, branched chain amino acids (bcaa), instant leucine, leucine tablets 1000mg, complete intra-workout™, leucine, bcaa jelly mix, complete hydration drink™, informed bcaa™, instant bcaa cocktail bundle]

现在我有另一个列表,其中只有 Out Of Stock 产品

list2内容是——

[informed bcaa™, instant bcaa cocktail bundle]

我必须确保list1 最后是否以相同的顺序包含所有 list2 项目

标签: javaarraylistcollections

解决方案


这个问题本质上是试图验证给定列表是否A以第二个列表结尾B

您可以通过确定 list 的长度,B从 list 的末尾回溯那么多空格A,然后对两个列表进行成对比较来实现这一点:

public static boolean listEndsWith(List<?> A, List<?> B) {
    if (B.size() > A.size()) {
        return false;
    }

    for (int i = A.size() - B.size(), j = 0; i < A.size(); i++, j++) {
        if (!A.get(i).equals(B.get(j))) {
            return false;
        }
    }

    return true;
}

推荐阅读