我有以下数组列表
cd1 = [3,5,7,10,15,16]
cd2 = [4,10,5,8]
输出[3,7,15,16]
你可以看到一个有6个位置,另一个有4个。
如果它们是重复的,它们应该存储在另一个数组列表
中代码I进位:
import java.util.ArrayList;
public class inexistentes {
public static ArrayList<Integer> inexistentes(ArrayList<Integer> cd1, ArrayList<Integer> cd2){
ArrayList<Integer> newList = new ArrayList<>();
for(int i = 0; i < cd1.size(); i++){
if(cd1.contains(i) ){
newList.add(i);
}
}
return newList;
}
}
我怎样才能买到那些链条…
我已经有了for,但是我不知道如何实现if。
您不需要应用复杂的逻辑。使用List#removeAll
函数可以很容易地满足您的要求。
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> cd1 = List.of(3, 5, 7, 10, 15, 16);
List<Integer> cd2 = List.of(4, 10, 5, 8);
List<Integer> result = new ArrayList<Integer>(cd1);
result.removeAll(cd2);
System.out.println(result);
}
}
输出:
[3, 7, 15, 16]
然而,如果你仍然想按照你的方式去做,就按下面的方法去做:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> cd1 = List.of(3, 5, 7, 10, 15, 16);
List<Integer> cd2 = List.of(4, 10, 5, 8);
System.out.println(inexistentes(cd1, cd2));
}
public static ArrayList<Integer> inexistentes(List<Integer> cd1, List<Integer> cd2) {
ArrayList<Integer> newList = new ArrayList<>();
for (int i = 0; i < cd1.size(); i++) {
int n = cd1.get(i);
if (!cd2.contains(n)) {
newList.add(n);
}
}
return newList;
}
}
请尝试这个循环
…
for (int i : cd1) {
if (!cd2.contains(i)) {
newList.add(i);
}
…
返回[3,7,15,16]
—edit—
进口java.util.ArrayList;
进口java.util.Arrays;
公共类inexistentes {
public static ArrayList<Integer> inexistentes(ArrayList<Integer> cd1, ArrayList<Integer> cd2) {
ArrayList<Integer> newList = new ArrayList<>();
for (int i : cd1) {
if (!cd2.contains(i)) {
newList.add(i);
}
}
return newList;
}
public static void main(String[] args) {
ArrayList cd1 = new ArrayList(Arrays.asList(3, 5, 7, 10, 15, 16));
ArrayList cd2 = new ArrayList(Arrays.asList(4, 10, 5, 8));
// [3,7,15,16]
ArrayList cd3 = inexistentes(cd1, cd2);
System.out.println(cd3.toString());
}
如果您可以使用Set,则可以将cd2转换为集合,并将Set与cd1进行比较。与使用contains() from list相比,这将更快。同时Set比List占用更多的内存。
private static ArrayList<Integer> inexistentes(List<Integer> cd1, List<Integer> cd2) {
ArrayList<Integer> newList = new ArrayList<>();
Set<Integer> cd2Set = new HashSet<Integer>(cd2);
for (int set1 : cd1) {
if (!cd2Set.contains(set1)) {
newList.add(set1);
}
}
return newList;
}