比较两个int数组并输出新旧项目

时间:2013-03-27 15:48:56

标签: 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 = 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);

  }

我该怎么做?

3 个答案:

答案 0 :(得分:2)

我理解您正在尝试的是:

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);

输出:

New items: [7]
Former items: [4]

答案 1 :(得分:0)

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);
 }

}

答案 2 :(得分:0)

给定两个数组a1和a2,你以前的项目将是a1中存在的项目而不是a2中的项目,而new将恰好相反。假设这就是你的意思,函数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;
    }
}
  

PS:Java中的可执行代码应该驻留在main等函数中   (初始化除外)