【问题标题】:Comparing vectors and chosing common elements java比较向量并选择常见元素java
【发布时间】:2013-09-11 12:54:49
【问题描述】:

我想将一个字符串向量与另一个向量或数组进行比较。关键是,根据某些情况,我将在数组/向量中添加一些字符串。然后,我想将它与另一个向量进行比较(这已经是一个向量,我使用的方法以这种方式返回它)并将公共元素保存在一个向量中(它应该是一个向量或者可以稍后转换)。

我不知道我是否可以使用向量来进行比较,或者我是否应该将我的向量转换为另一种类型(数组、列表)来进行比较。有什么想法吗?

【问题讨论】:

  • 仅供参考,现实世界中没有人使用 Vector - 这是一个破损的遗物。使用列表。
  • 其中一个“列表”必须是 Vector,因为该方法以这种方式返回它。一个选项可能是将其转换为 List,进行比较,然后再次将公共元素 List 转换为 Vector,因为它必须是另一个方法的 Vector...
  • 是一个使用jsip库的SIP程序,大部分时间使用SDP加载将信息保存在Vector中。在这种情况下,媒体格式信息...

标签: java arrays string vector compare


【解决方案1】:

要提取常见元素,您可以使用Vector.retainAll()

仅保留此 Vector 中包含在 指定的集合。换句话说,从这个 Vector 中删除所有 不包含在指定集合中的元素。 返回:如果此 Vector 由于调用而改变,则为 true

v1.retainAll(v2) //v1 will contain common elements only after this

SideNote:它在后台使用.equals()

【讨论】:

  • 所以,如果我将我的信息保存在向量 (v2) 中并执行 v1.retainAll(v2),那么现在在 v1 中我将只有公共元素 v1Uv2?
  • 谢谢,我试试!
【解决方案2】:

你可以试试这样的:

Vector commonItems = new Vector();
Iterator vector1 = (whateverThefirstvectoris).itr();
Iterator vector2 = (whateverThesecondvectoris).itr();

while(vector1.hasNext())
{
    Object temp = new Object;
    temp = vector1.next();
    while(vector2.hasNext())
    {
        if(vector2.next().equals(temp))
        {
            commonItems.add(temp);
        }
    }
}

【讨论】:

  • 另一个答案似乎更简单快捷,但如果它不能正常工作,我也会试试这个!还是谢谢你!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2014-03-16
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多