【问题标题】:ArrayList remove duplicates (make unique)?ArrayList 删除重复项(使唯一)?
【发布时间】:2017-06-10 23:46:26
【问题描述】:

我试图弄清楚如何在 VBScript 中从 ArrayList 中删除重复项,但似乎没有可用的信息。由于(显然)没有专门的功能,也许我可以得到一些建议,否则如何做到这一点?

我发现的唯一类似问题与 Java 相关,而不是 VBScript。

【问题讨论】:

  • @Kira 这个问题是关于 VBScript,而不是关于 Java。感谢您提供可能的答案,但不适用于这种特殊情况。
  • @derei ArrayList 是什么意思? VBScript 中没有这样的内置对象或类型。你能给我们看一个示例代码吗?
  • @Kul-Tigin 他的意思是System.Collections.ArrayList 类。它是公开 COM 接口的 .Net 类之一,因此可以在 VBScript 中使用。
  • @AnsgarWiechers 我知道它是什么。我经常在 VBScript 中使用那些 COM 可见的 .NET 对象,尤其是来自 System.CollectionsSystem.Security.Cryptography 命名空间的对象。但这不是重点。我问是因为从某个地方获取的示例 VB.NET 代码 sn-p 可能会将我们带到这里。我们会看看他/她的男人。

标签: arraylist vbscript duplicates unique


【解决方案1】:

我想说最简单的方法是将值放入Dictionary

Set d = CreateObject("Scripting.Dictionary")

For Each e In arrayList
  d(e) = e
Next

arr = d.Items    'put unique elements back into 

如果您的数组列表包含对象并且您不希望对象引用作为唯一性指标,则您需要识别某种属性(或属性组合)来定义对象的唯一性并将其用作词典。您还需要使用Set 关键字来分配对象。

For Each e In arrayList
  Set d(e.uniqueProperty) = e
Next

如果您希望原始变量中的唯一列表返回,则需要另一个循环将元素从字典传输回数组列表:

arrayList.Clear
For Each e In d.Items
  arrayList.Add e
Next

【讨论】:

    【解决方案2】:

    vba 中的 Arraylist 对象有一个.contains 方法。所以,要得到一个没有重复的数组列表,你所要做的就是这样。

    Set newArraylist = CreateObject("Scripting.Dictionary")
    
    For Each item In originalArrayList
      if newArraylist .contains(item) = false then newArraylist .add(item)
    Next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 2012-08-25
      相关资源
      最近更新 更多