Помогите с задачкой по java

Я новичок в java и сейчас работаю с массивами, мне нужно сравнить 2 массива и узнать есть ли в них разные числа, но у меня почему-то появляются какие-то проблемы с выводом. Вот код:

int[] a = {2, 6 , 1, 8, 12, 7};
    int[] b = {3, 2, 7, 5, 4, 8, 9, 25, 87, 126, 216};
    System.out.print("Одинаковые числа: ");
    for(int i = 0; i < 6; i++){
        for(int j = 0; j < 11; j++){
            if(a[i] == b[j]){
                System.out.print(a[i] + ", ");
            }
        }
    }
    System.out.print("\nРазные числа: ");
    for(int i = 0; i < 6; i++){
        for(int j = 0; j < 11; j++){
            if(a[i] != b[j]){
                System.out.print(a[i] + ", ");
            }
        }
    }

Какой результат получается: введите сюда описание изображения


Ответы (1 шт):

Автор решения: Andrew

Можно попробовать решить вашу задачу при помощи ArrayList:

public class MyClass {
    public static void main(String args[]) {
        ArrayList<Integer> listOne = new ArrayList<>(Arrays.asList(2, 6 , 1, 8, 12, 7));
        ArrayList<Integer> listTwo = new ArrayList<>(Arrays.asList(3, 2, 7, 5, 4, 8, 9, 25, 87, 126, 216));

        for (Integer element : listTwo) {
        if (listOne.contains(element)) {
         System.out.println("Одинаковое число -> " + element);
         } else {
         System.out.println("Разное число -> " + element);
        }
        }

    }
}

Если же вам нужно вывести все и сразу, то можно формировать итоговые массивы:

ArrayList<Integer> common = new ArrayList<>();
ArrayList<Integer> uncommon = new ArrayList<>();
for (Integer element : listTwo) {
if (listOne.contains(element)) {
     common.add(element);
    } else {
    uncommon.add(element);

  }
}
System.out.println("Одинаковые числа -> " + common.toString());
System.out.println("Разные числа -> " + uncommon.toString());

Вывод:

Одинаковые числа -> [2, 7, 8]
Разные числа -> [3, 5, 4, 9, 25, 87, 126, 216]

Итоговая программа:

public class MyClass {
    public static void main(String args[]) {
        ArrayList<Integer> listOne = new ArrayList<>(Arrays.asList(2, 6 , 1, 8, 12, 7));
        ArrayList<Integer> listTwo = new ArrayList<>(Arrays.asList(3, 2, 7, 5, 4, 8, 9, 25, 87, 126, 216));

         ArrayList<Integer> common = new ArrayList<>();
          ArrayList<Integer> uncommon = new ArrayList<>();

        for (Integer element : listTwo) {
        if (listOne.contains(element)) {
            common.add(element);

         } else {
             uncommon.add(element);

        }
        }
        System.out.println("Одинаковые числа -> " + common.toString());
        System.out.println("Разные числа -> " + uncommon.toString());

    }
}

Я бы вам советовал использовать arrayList так как у него есть куча методов которые облегчают работу с элементами :)

UPDATE

Как уже было замечено в комментариях, можно использовать и сет для решения данной задачи:

public static void main(String args[]) {

      Set<Integer> s1 = new HashSet<Integer>(); 
      Set<Integer> s2 = new HashSet<Integer>(); 
        s1.addAll(Arrays.asList(new Integer[] {2, 6 , 1, 8, 12, 7})); 
        s2.addAll(Arrays.asList(new Integer[] {3, 2, 7, 5, 4, 8, 9, 25, 87, 126, 216})); 


        Set<Integer> intersection = new HashSet<Integer>(s1); 
        intersection.retainAll(s2); 
        System.out.print("Есть в обоих массивах "); 
        System.out.println(intersection); 


        Set<Integer> difference1 = new HashSet<Integer>(s1); 
        difference1.removeAll(s2); 
        System.out.print("Есть в первом и нет во втором массиве "); 
        System.out.println(difference1); 

        Set<Integer> difference2 = new HashSet<Integer>(s2); 
        difference2.removeAll(s1); 
        System.out.print("Есть во втором и нет в первом массиве "); 
        System.out.println(difference2); 
    }

Вывод:

Есть в обоих массивах [2, 7, 8]
Есть в первом и нет во втором массиве [1, 6, 12]
Есть во втором и нет в первом массиве [3, 4, 5, 87, 216, 9, 25, 126]
→ Ссылка