当前位置: 首页 > 知识库问答 >
问题:

如何比较两个数组列表并提取第三个数组列表中两个数组列表中不常见的元素

饶元章
2023-03-14
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");

      //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);

  }
}
[No, No, No, Yes, Yes]

有人请让我知道我如何才能达到预期的结果。如有任何帮助,不胜感激。

谢谢

共有1个答案

石苏燕
2023-03-14

首先,请编程到List接口(而不是ArrayList具体类型)。您还可以使用arrays.aslist来缩短初始化时间。然后我将stream()每个列表-您希望筛选流中其他列表中不包含的元素,然后将它们添加到第三个列表中。就像,

List<String> al1 = Arrays.asList("hi", "How are you", "Good Morning", "bye", "Good night");
List<String> al2 = Arrays.asList("Howdy", "Good Evening", "bye", "Good night");
List<String> al3 = al1.stream().filter(s -> !al2.contains(s)).collect(Collectors.toList());
al3.addAll(al2.stream().filter(s -> !al1.contains(s)).collect(Collectors.toList()));
System.out.println(al3);

哪些产出

[hi, How are you, Good Morning, Howdy, Good Evening]

或者,没有流(这样可以更好地理解算法),

List<String> al3 = new ArrayList<>();
for (String s : al1) {
    if (!al2.contains(s)) {
        al3.add(s);
    }
}
for (String s : al2) {
    if (!al1.contains(s)) {
        al3.add(s);
    }
}
System.out.println(al3);
 类似资料:
  • 我有以下数组列表 现在我需要比较这两个数组,并检查是否有id中的任何值存在于empIds中。如果是,我需要以布尔值true退出。我是这样做的。 但这需要很多时间。有人能帮我优化一下吗?

  • 问题内容: 写一个方法 公共静态ArrayList merge(ArrayList a,ArrayList b) 合并两个数组列表,两个数组列表中的元素交替出现。如果一个数组列表短于另一个数组列表,则请尽可能长地交替,然后附加较长数组列表中的其余元素。例如,如果a是 1 4 9 16 b是 9 7 4 9 11 然后合并返回数组列表 1 9 4 7 9 4 16 9 11 我尝试做的是编写一个带i

  • 我正在尝试开发一个程序,通过将甲板分成两个然后交错来洗牌甲板。 Class Deck代表52张牌的一副牌。有两种方法:Deck(int n)和Card drawCard()。 Deck(int n)是构造函数。该参数告诉牌组应该洗牌多少轮。在每轮洗牌中,整个甲板首先被分成两个子甲板。副甲板然后交错成一整层甲板。 一些注意事项: > 为了简化讨论,我们假设卡片是1,2,…,10。 Card draw

  • 我试图将输入与arraylist中的值进行比较。 前任;我有一个arraylist: 数组的每个索引在我的程序中代表一个唯一的属性。e、 g索引0代表,索引1代表等。如果我做返回第二个数组。 我正在尝试将与每个数组中的第二个元素进行比较。所以假设我运行这个,我希望它遍历每个数组中的每个[1],如果该索引匹配,则返回true。 因此,我希望它将'number'(1102)与每个第一个索引元素进行比较

  • 我将在序言中说我使用的是Swift1.2。我目前正在研究一个广度优先搜索算法,我以前在其他语言中实现过这个算法,比如javaScript或Python。 真的,我所要求的是一个优雅的方法来找到这两个之间的重复... 上面的新列表表示可以添加的新节点(不是重复的)问题是...复制的确实会被添加。下面是我的乱七八糟的代码:

  • 我有两个表,分别是产品和采购: PRODUCTS表-将获得购买的所有新产品。这意味着表prroducts中不存在相同的productname。所有独特产品列表 采购表-具有唯一purchase_id的所有采购产品的列表。 > 如果要在PURCHASE中添加或插入值,表PRODUCTS将获得PURCHASE的所有值,但前提是PURCHASE中的productname不存在于PRODUCTS中的'pr