【问题标题】:Find String Array Difference in Java在 Java 中查找字符串数组的差异
【发布时间】:2011-01-14 07:30:43
【问题描述】:

我创建了两个数组变量:s1 和 s2 s1 包含 {ram,raju,seetha} s2 包含 {ram}

我想将两个数组作为集合相减,以获得以下结果:

拉朱 西塔

我该怎么做?

【问题讨论】:

标签: java arrays set-difference


【解决方案1】:

如果您的数组中的元素是唯一的,您可以创建一个java.util.Set 并执行一个removeAl(...)。如果它们不是唯一的,请改用java.util.List

【讨论】:

    【解决方案2】:

    您可以通过遍历项目来获得差异:

    String[] s1 = {"ram", "raju", "seetha"};
    String[] s2 = {"ram"};
    List<String> s1List = new ArrayList(Arrays.asList(s1));
    for (String s : s2) {
      if (s1List.contains(s)) {
        s1List.remove(s);
      }
      else {
        s1List.add(s);
      }
    }
    

    s1List 包含两个数组之间的差异。

    【讨论】:

    • 添加这个只是为了提供一个实现。如果我自己有这个问题,我会选择 Bart K. 的解决方案。
    • 您不能修改使用Arrays.asList(...)创建的列表。
    • @jarnbjo 没错,改变了答案。
    【解决方案3】:

    要自己实现它(例如,如果这是家庭作业并且您还没有学习 Java 集合 API),您可以这样处理:对于第一个数组中的每个元素,将元素添加到结果中,如果它是不包含在另一个数组中。现实世界的解决方案是使用集合,as described by Bart

    【讨论】:

      【解决方案4】:
      public ArrayList getUnique( ArrayList original, ArrayList subset ){
              ArrayList u = new ArrayList();
              Collection<ArrayList> o = original;
              Collection<ArrayList> s = subset;
      
              o.removeAll(s);
              u.addAll(o);
      
              return u;
      }
      

      您可以从上面的代码中减少几行,但为了清楚起见,我保留了它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-29
        • 1970-01-01
        • 1970-01-01
        • 2020-11-26
        • 1970-01-01
        • 2020-06-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多