1

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

  }

我怎样才能做到这一点 ?

4

3 回答 3

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]
于 2013-03-27T15:58:01.463 回答
0

你快到了,只需添加两个列表 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);
 }

}
于 2013-03-27T16:00:51.550 回答
0

给定两个数组 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;
    }
}

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

于 2013-03-27T16:01:39.227 回答