Java 比较两个int数组并输出新的和以前的项

Java 比较两个int数组并输出新的和以前的项,java,compare,Java,Compare,我对Java真的很陌生。我需要知道两个数组之间的新项和旧项。 例如: A1= {4,5,6}; A2={5,6,7}; result: new item is 7 former item is 4. 我尝试此代码,但没有结果: import java.util.Arrays; import java.util.List; Integer[] s1 = {4, 5, 6}; Integer[] s2 = {5,6,7}; List<Integer> s1List

我对Java真的很陌生。我需要知道两个数组之间的新项和旧项。 例如:

A1= {4,5,6};
A2={5,6,7};
result: new item is 7
    former item is 4. 
我尝试此代码,但没有结果:

import java.util.Arrays;
import java.util.List; 
Integer[] s1 = {4, 5, 6};
  Integer[] s2 = {5,6,7};
  List<Integer> s1List = new ArrayList(Arrays.asList(s1));
  for (Integer s : s2) {
    if (s1List.contains(s)) {
      s1List.remove(s);
    } 
    else {
      s1List.add(s);
    }
    System.out.println("nouveaux items =" + s1List);

  }
导入java.util.array;
导入java.util.List;
整数[]s1={4,5,6};
整数[]s2={5,6,7};
List s1List=newarraylist(Arrays.asList(s1));
for(整数s:s2){
如果(列表包含){
s1.删除列表;
} 
否则{
s1.添加列表;
}
System.out.println(“新项目=“+s1List”);
}

我该怎么做?

据我所知,您正在尝试的是:

Integer[] s1 = {3, 4, 5, 6};
Integer[] s2 = {3, 5, 6, 7};
List<Integer> newItems = new ArrayList<Integer>(Arrays.asList(s1));
newItems.removeAll(Arrays.asList(s2));
List<Integer> formerItems = new ArrayList<Integer>(Arrays.asList(s2));
formerItems.removeAll(Arrays.asList(s1));
System.out.println("New items: " + newItems);
System.out.println("Former items: " + formerItems);

U差不多到了,只需添加两个列表s1List是旧项列表,对于新项列表是新项列表

List<Integer> s1List = new ArrayList(Arrays.asList(s1));
List<Integer> newList = new ArrayList();

for (Integer s : s2) {
if (s1List.contains(s)) {
   s1List.remove(s);
 } 
 else {
   newList.add(s);
 }

}
List s1List=newarraylist(Arrays.asList(s1));
List newList=newarraylist();
for(整数s:s2){
如果(列表包含){
s1.删除列表;
} 
否则{
新列表。添加(s);
}
}

给定两个数组a1和a2,以前的项目将出现在a1中,而不是a2中,新项目将正好相反。假设这就是您的意思,函数
newItem(a1,a2)
将查找a2中存在的项,但不查找a1中的项。
formerItems()
只使用
newItems()
替换数组,因为逻辑保持不变

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class FormerAndLast {

    public static void main(String[] args) {

        Integer[] s1 = { 4, 5, 6 };
        Integer[] s2 = { 5, 6, 7 };

        System.out.println("nouveaux items =" + newItems(s1, s2));

        System.out.println("former items =" + formerItems(s1, s2));
    }

    private static List<Integer> formerItems(Integer[] s1, Integer[] s2) {
        return newItems(s2, s1);
    }

    private static List<Integer> newItems(Integer[] a1, Integer[] a2) {
        List<Integer> list1 = Arrays.asList(a1);
        List<Integer> list2 = Arrays.asList(a2);

        List<Integer> newItems = new ArrayList<Integer>();

        for (Integer i : list2) {
            if (!list1.contains(i))
                newItems.add(i);
        }

        return newItems;
    }
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.List;
公共类FORMEANDLAST{
公共静态void main(字符串[]args){
整数[]s1={4,5,6};
整数[]s2={5,6,7};
System.out.println(“新项目=“+newItems(s1,s2));
System.out.println(“前项=“+formerItems(s1,s2));
}
私有静态列表表单项(整数[]s1,整数[]s2){
返回新项目(s2、s1);
}
私有静态列表newItems(整数[]a1,整数[]a2){
list1=Arrays.asList(a1);
list2=Arrays.asList(a2);
List newItems=new ArrayList();
for(整数i:list2){
如果(!list1.contains(i))
新增项目。添加(i);
}
返回新项目;
}
}
PS:Java中的可执行代码应该驻留在诸如main之类的函数中 (初始化除外)


当前代码中出现了什么错误或意外行为?不需要两个列表吗?一个用于以前的项目,一个用于新项目?您是否假设预先排序的列表?请至少发布一个可编译版本的代码。它看起来很简单,但我不这么认为;I don’’我不知道你想做什么。所有的事情都是要做的。最后一个列表中剩下的是OP想要的。这给了我一个错误:addall集合extensed integer方法不适用于参数列表>int[]。这是我的声明int[]s1=newint[3];int[]s2=新的int[3];s1[0]=4;s1[1]=5;s1[2]=6;s2[0]=5;s2[1]=6;s2[2]=7@user2216280我的错,我解决了问题
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class FormerAndLast {

    public static void main(String[] args) {

        Integer[] s1 = { 4, 5, 6 };
        Integer[] s2 = { 5, 6, 7 };

        System.out.println("nouveaux items =" + newItems(s1, s2));

        System.out.println("former items =" + formerItems(s1, s2));
    }

    private static List<Integer> formerItems(Integer[] s1, Integer[] s2) {
        return newItems(s2, s1);
    }

    private static List<Integer> newItems(Integer[] a1, Integer[] a2) {
        List<Integer> list1 = Arrays.asList(a1);
        List<Integer> list2 = Arrays.asList(a2);

        List<Integer> newItems = new ArrayList<Integer>();

        for (Integer i : list2) {
            if (!list1.contains(i))
                newItems.add(i);
        }

        return newItems;
    }
}