Java 使用arraylist比较两个字符串数组
我想比较两个字符串数组A、B。我想返回和/或显示A、B特有的元素以及A和B中的元素。我调用了我的方法,如下所示,但得到了错误的结果。如何修复它Java 使用arraylist比较两个字符串数组,java,Java,我想比较两个字符串数组A、B。我想返回和/或显示A、B特有的元素以及A和B中的元素。我调用了我的方法,如下所示,但得到了错误的结果。如何修复它 A = 1,2,3,4,5; B = 1,2; compareStringArray(A,B, true);// true means print results 结果- --Elements in ONLY A - 3, 5 --Elements in ONLY B - --Elements in both A & B - 2
A = 1,2,3,4,5;
B = 1,2;
compareStringArray(A,B, true);// true means print results
结果-
--Elements in ONLY A -
3, 5
--Elements in ONLY B -
--Elements in both A & B -
2
代码-
公共静态数组列表比较数组(
字符串[]arrayA,字符串[]arrayB,布尔显示){
ArrayList结果=新建ArrayList();
ArrayList ara=新的ArrayList(Arrays.asList(arrayA));
arraylistarb=新的ArrayList(Arrays.asList(arrayB));
ArrayList common=新的ArrayList();
用于(字符串s:ara){
如果(仲裁内容){
普通。添加(s);
}//如果
}//为了
for(字符串s:公共){
如果(附件中包含){
ara.移除(s);
}//如果
如果(仲裁内容){
arb.移除(s);
}//如果
}//为了
结果:添加(ara);
结果:添加(arb);
结果:添加(普通);
如果(显示==真){
ArrayList als=null;
als=结果。获取(0);
System.out.println(“\n--仅A-\n中的元素”);
printArrayListOfStringAsCSV(als);
als=结果。获取(1);
System.out.println(“\n--仅B-\n中的元素”);
printArrayListOfStringAsCSV(als);
als=结果。获取(2);
System.out.println(“\n——A和B中的元素-\n”);
printArrayListOfStringAsCSV(als);
}//如果
返回结果;
}//比较
您的代码在我的机器上运行(我必须修复main,并实现printaraylistofstringascsv
sotsk-tsk)-
这可能意味着问题出在printArrayListOfStringAsCSV()中。查看它…使用嵌套循环,在第一次选择arr1的第一个参数,然后进行下一个arr,即ARR2,我们可以看到您得到的结果吗?可能.contains(String)不起作用的原因与您使用.equals()来比较字符串和not==的原因相同,但我可能有点不对劲that@ghostbust555-看起来你没有注意到。结果已经给出了!哇,你说得对。我读得太快了,并认为这些是期望的结果,而不是当前的重用,我的愚蠢:(.这是我的printArrayListOfStringAsCSV方法的问题。旧方法-public static void printArrayListOfStringAsCSV(ArrayList results){String csv=”“;int size=results.size();if(size>1){int lastIdx=size-1;for(int i=0;i
public static ArrayList<ArrayList<String>> compareStringArray(
String[] arrayA, String[] arrayB, boolean display) {
ArrayList<ArrayList<String>> results = new ArrayList<ArrayList<String>>();
ArrayList<String> ara = new ArrayList<String>(Arrays.asList(arrayA));
ArrayList<String> arb = new ArrayList<String>(Arrays.asList(arrayB));
ArrayList<String> common = new ArrayList<String>();
for(String s : ara){
if (arb.contains(s)) {
common.add(s);
}// if
}//for
for(String s: common){
if (ara.contains(s)) {
ara.remove(s);
}// if
if (arb.contains(s)) {
arb.remove(s);
}// if
}//for
results.add(ara);
results.add(arb);
results.add(common);
if (display == true) {
ArrayList<String> als = null;
als = results.get(0);
System.out.println("\n--Elements in ONLY A - \n");
printArrayListOfStringAsCSV(als);
als = results.get(1);
System.out.println("\n--Elements in ONLY B - \n");
printArrayListOfStringAsCSV(als);
als = results.get(2);
System.out.println("\n--Elements in both A & B - \n");
printArrayListOfStringAsCSV(als);
}// if
return results;
}// compare
public static void main(String[] args) {
String[] A = { "1", "2", "3", "4", "5" };
String[] B = { "1", "2" };
compareStringArray(A, B, true);
}
public static void printArrayListOfStringAsCSV(
List<String> al) {
for (int i = 0; i < al.size(); i++) {
if (i != 0) {
System.out.print(", ");
}
System.out.print(al.get(i));
}
System.out.println();
}
--Elements in ONLY A -
3, 4, 5
--Elements in ONLY B -
--Elements in both A & B -
1, 2