我是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);
}
我该怎么做?
答案 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等函数中 (初始化除外)