如何将arraylist的多个项目与特定位置的另一个arraylist进行比较?

Nar*_*raR 5 java collections 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]
Run Code Online (Sandbox Code Playgroud)

现在我有另一个只有Out Of Stock产品的清单

list2 和内容是 -

[informed bcaa™, instant bcaa cocktail bundle]
Run Code Online (Sandbox Code Playgroud)

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

nbr*_*oks 4

这个问题本质上是试图验证给定列表是否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;
}
Run Code Online (Sandbox Code Playgroud)