查找Java中字符串数组的差异

查找Java中字符串数组的差异,java,arrays,set-difference,Java,Arrays,Set Difference,我创建了两个数组变量:s1和s2 s1包含{ram,raju,seetha} s2包含{ram} 我想将两个数组作为集合相减,以得到以下结果: 拉朱 西莎 如何执行此操作?如果数组中的元素是唯一的,则可以创建并执行。如果它们不是独一无二的,那就换一种 您可以通过循环项目来获得差异: String[] s1 = {"ram", "raju", "seetha"}; String[] s2 = {"ram"}; List<String> s1List = new ArrayList(Ar

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

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

拉朱 西莎


如何执行此操作?

如果数组中的元素是唯一的,则可以创建并执行。如果它们不是独一无二的,那就换一种

您可以通过循环项目来获得差异:

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);
  }
}
String[]s1={“ram”、“raju”、“seetha”};
字符串[]s2={“ram”};
List s1List=newarraylist(Arrays.asList(s1));
for(字符串s:s2){
如果(列表包含){
s1.删除列表;
}
否则{
s1.添加列表;
}
}

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

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

公共ArrayList getUnique(ArrayList original,ArrayList subset){
ArrayList u=新的ArrayList();
收藏o=原件;
集合s=子集;
o、 移除所有(s);
u、 addAll(o);
返回u;
}

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

添加这个只是为了提供一个实现。如果我自己有这个问题,我会使用Bart K.的解决方案。你不能修改一个列表,它是用
数组创建的。asList(…)
@jarnbjo True更改了答案。如果
s1={a”,“b”}
s2={c”,“d”}
,你的数组会有什么不同呢<代码>{a”,“b”}或
{a”,“b”,“c”,“d”}
重复:
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;
}