我遇到了一个问题,我需要找到array1中不存在的数组元素,但使用java在array2中存在。与SQL不同,在SQL中,人们可以直接使用命令"像";或";不像";,在java中,您可能需要从头开始构建程序。虽然,一个简单的程序,它只是工作。欢迎更多的解决方案!
String[] colours = { "black", "red", "white", "yellow","magenta","mahogini"};
String[] colours2 = { "black", "red","orange","yellow","Yellow","pink","purple","indigo","nuque" };
ArrayList<String> coloursExist = new ArrayList<String>();
ArrayList<String> coloursDoNotExist = new ArrayList<String>();
int unmatch=0;
int max_length= colours.length;
for (int i = 0; i < colours2.length; i++) {
for (int j = 0; j < colours.length; j++) {
if (colours[j].contains(colours2[i])) {
// System.out.println(colours2[i]+" exists in colours");
coloursExist.add(colours2[i]);
break;
}
unmatch++;
if (unmatch==max_length) {
coloursDoNotExist.add(colours2[i]);
}
}//end of inner for loop
unmatch=0;
}//end of for loop
结果:
[black, red, yellow]
[orange, Yellow, pink, purple, indigo, nuque]
使用List
的removeAll()
方法,它就像一个集合相对补码:
String[] colours = { "black", "red", "white", "yellow","magenta","mahogini"};
String[] colours2 = { "black", "red","orange","yellow","Yellow","pink","purple","indigo","nuque" };
List<String> list = new ArrayList<>(Arrays.asList(colours2));
list.removeAll(Arrays.asList(colours));
System.out.println(list);
输出
[orange, Yellow, pink, purple, indigo, nuque]
您可以使用内置方法List.removeAll
和List.retainAll
实现相同的效果
String[] colours = {"black", "red", "white", "yellow", "magenta", "mahogini"};
String[] colours2 = {"black", "red", "orange", "yellow", "Yellow", "pink", "purple", "indigo", "nuque"};
List<String> colList = Arrays.asList(colours);
List<String> col2List = Arrays.asList(colours2);
List<String> coloursExist = new ArrayList<>(colList);
coloursExist.retainAll(col2List);
List<String> coloursDoNotExist = new ArrayList<>(col2List);
coloursDoNotExist.removeAll(colList);
System.out.println(coloursExist); // [black, red, yellow]
System.out.println(coloursDoNotExist); //[orange, Yellow, pink, purple, indigo, nuque]
希望这有帮助:
import java.util.*;
public class Main {
public static void main(String[] args) {
String[] colours = { "black", "red", "white", "yellow","magenta","mahogini"};
String[] colours2 = { "black", "red","orange","yellow","Yellow","pink","purple","indigo","nuque" };
ArrayList<String> coloursList1 = new ArrayList(Arrays.asList(colours));
ArrayList<String> coloursList2 = new ArrayList(Arrays.asList(colours2));
ArrayList<String> tempColoursList1 = new ArrayList(Arrays.asList(colours));
ArrayList<String> tempColoursList2 = new ArrayList(Arrays.asList(colours2));
tempColoursList2.removeAll(tempColoursList1);
System.out.println("Uncommon elements : " + tempColoursList2);
coloursList1.retainAll(coloursList2);
System.out.println("Common elements : " + coloursList1);
}
}
输出
Uncommon elements : [orange, Yellow, pink, purple, indigo, nuque]
Common elements : [black, red, yellow]