0

I came across a problem where I need to find array elements that do not exist in array1, however, exists in array2 using java. Unlike SQL, where people can directly use commands "like" or "not like", in java you might need to build a program from scratch. Although, a simple program, it just works. More solutions are welcome!

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

Result:

[black, red, yellow]
[orange, Yellow, pink, purple, indigo, nuque]
 
azro
  • 53,056
  • 7
  • 34
  • 70

3 Answers3

0

Use the removeAll() method of List, which is like a set relative-complement:

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

Output

[orange, Yellow, pink, purple, indigo, nuque]
Andreas
  • 154,647
  • 11
  • 152
  • 247
0

You can achieve the same using built-in method List.removeAll and 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]
azro
  • 53,056
  • 7
  • 34
  • 70
0

Hope this helps :

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

Output

Uncommon elements : [orange, Yellow, pink, purple, indigo, nuque]                                                                                           
Common elements   : [black, red, yellow] 
Som
  • 1,522
  • 1
  • 15
  • 48