gpt4 book ai didi

java - 将 ArrayList 的 ArrayList 与 ArrayList 进行比较

转载 作者:行者123 更新时间:2023-12-02 05:23:06 28 4
gpt4 key购买 nike

在下面的示例中,我将如何将 ArrayList al4 的内容与其他 ArrayList 中的任何一个进行比较?以同样的方式,我将 al1al2 进行了比较。

import java.util.ArrayList;

public class Details {
public static void main(String[] args) {
ArrayList<String> al1 = new ArrayList<String>();
al1.add("hi");
al1.add("How are you");
al1.add("Good Morning");
al1.add("bye");
al1.add("Good night");

ArrayList<String> al2 = new ArrayList<String>();
al2.add("Howdy");
al2.add("Good Evening");
al2.add("bye");
al2.add("Good night");

ArrayList<ArrayList<String>> al4 = new ArrayList<ArrayList<String>>();
al4.add(al1);

// Storing the comparison output in ArrayList<String>
ArrayList<String> al3 = new ArrayList<String>();
for (String temp : al1)
al3.add(al2.contains(temp) ? "Yes" : "No");
System.out.println(al3);

}
}

al3的输出

[No, No, No, Yes, Yes]

最佳答案

这有点取决于你的意思。您不能直接比较al4al2 ,因为它们的类型不同:一个是 ArrayList<String>其中一个是ArrayList<ArrayList<String>> .

当你比较al1时和al2 ,您正在做的是确定 al1 的每个元素,无论它出现在 al2 中的任何地方 。我想这就是你想要的。您无法决定它是否出现在 al2 中的同一位置。 .

您应该做的第一件事是改进这种比较,这是相当低效的。因为您不关心 al2 的顺序,你应该像这样重写比较:

ArrayList<String> al3 = new ArrayList<String>();
Set<String> al2set = new HashSet<String>(al2);
for (String temp : al1)
al3.add(al2set.contains(temp) ? "Yes" : "No");

这样效率更高,因为您不必遍历整个 al2对于每次查找。

现在,如果您想将列表列表与列表进行比较,我只能假设您的意思是您想要告诉 al4 中任何列表的每个元素。 ,是否出现在 al2 。如果是这样,那么您想要

ArrayList<String> al3 = new ArrayList<String>();
Set<String> al2set = new HashSet<String>(al2);
for (List<String> tempList : al4)
for (String temp : tempList)
al3.add(al2set.contains(temp) ? "Yes" : "No");

这将为您提供一套公寓 ArrayList<String> ,记录 al4 列表中的每个元素,该元素是否在 al2 中某处。

您可能希望结果为 ArrayList<ArrayList<String>> ,这样结果就模仿 al4 的结构,在这种情况下,它只是稍微复杂一点:

ArrayList<ArrayList<String>> al3list = new ArrayList<ArrayList<String>>();
Set<String> al2set = new HashSet<String>(al2);
for (List<String> tempList : al4) {
ArrayList<String> al3 = new ArrayList<String>();
for (String temp : tempList)
al3.add(al2set.contains(temp) ? "Yes" : "No");
al3list.add(al3);
}

执行此命令后,a3list将具有与 al4 相同的结构,每个列表的每个元素都是 "Yes""No" ,根据al4中是否对应元素包含在al2中的某个地方.

关于java - 将 ArrayList 的 ArrayList 与 ArrayList 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26329571/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com