比较两个字符串ArrayList

3

我有两个数组列表

  dim Colors1 = New ArrayList
  Colors1.Add("Blue")
  Colors1.Add("Red")
  Colors1.Add("Yellow")
  Colors1.Add("Green")
  Colors1.Add("Purple")

  dim Colors2 = New ArrayList
  Colors2.Add("Blue")
  Colors2.Add("Green")
  Colors2.Add("Yellow")

我想找出在Colors1中存在而在Colors2中缺失的颜色。
2个回答

7
请使用Except方法。该方法返回第一个序列中不出现在第二个序列中的元素,但不会返回第二个序列中不出现在第一个序列中的元素。

因此,您可以将colors2作为第一个参数,将colors1作为第二个参数。

编辑:我是说您可以将colors1放在第一位,将colors2放在第二位。

编辑2:(根据Sean的建议)

var missingFrom2 = colors1.Except(colors2);

+1 以前从没注意过这个。(注:需要 .NET 3.5 或更高版本) - egrunin
@egruni 是的,说得好。谢谢你提醒我。这是Linq扩展方法的一部分。 - spinon
我想补充一下,因为答案可能会让人感到困惑,你可以这样写:'var missingFrom2 = colors1.Except(colors2);' - Sean Copenhaver
@sean 谢谢提供示例。每当我们有一个示例,它总是很有帮助的。 - spinon
如果我不是在运行.NET版本2.0.50727.3053,+1对一个可能有效的答案。 - zeroef
在Java中有相应的等价物吗? - Hell Boy

1

仅为完整起见,我将添加老式的方法。

List<string> result = new List<string>();

foreach (string s in Colors1)
    if (Colors2.Contains(s) == false)
        result.add(s);

// now result has the missing colors

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接