Как найти одинаковые элементы массива в java?

Пользователь

от nicolette.stoltenberg , в категории: Java , 2 года назад

Как найти одинаковые элементы массива в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 2 года назад

@nicolette.stoltenberg  Вы можете использовать цикл и несколько условий для нахождения одинаковых элементов в массиве.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Main {
    public static int[] get_matches(int[] array){
        int[] match_indexes = new int[]{0, 0}; 

        for (int i = 0; i < array.length; i++) { // Циклом перебираем каждое значение и сравниваем друг с другом
            for (int j = 0; j < array.length; j++) {
                if (array[i] == array[j] && i != j){ // Находим первое совпадение
                    match_indexes[0] = i; // Записываем полученные совпадения
                    match_indexes[1] = j;

                    return match_indexes; // Завершаем цикл
                }
            }
        }
        return match_indexes;
    }
    public static void main(String[] args) throws Exception {
        int[] array = new int[] {1, 2, 3, 4, 5, 1, 6, 7, 8, 9};
        int[] match_indexes = get_matches(array);

        System.out.println(match_indexes[0] + " " + match_indexes[1]);


        // Вывод : 0 5
    }
}

Пользователь

от camren , год назад

@nicolette.stoltenberg 

В Java существует несколько способов найти одинаковые элементы в массиве. Один из таких способов - использование вложенного цикла for для сравнения каждого элемента с остальными элементами массива. Однако этот способ имеет временную сложность O(n^2) и неэффективен для больших массивов.


Более эффективным способом является использование HashSet. HashSet - это коллекция, которая не позволяет дублировать элементы. Вы можете использовать HashSet для добавления всех элементов из массива, и если при добавлении элемента в HashSet возвращается false, это означает, что элемент уже был добавлен ранее и является дубликатом. Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import java.util.HashSet;

public class Main {
  public static void main(String[] args) {
    String[] arr = {"apple", "banana", "apple", "orange", "banana"};
    HashSet<String> set = new HashSet<String>();
    for (String element : arr) {
      if (!set.add(element)) {
        System.out.println("Duplicate element found: " + element);
      }
    }
  }
}


В этом примере мы инициализируем массив строк arr с несколькими дубликатами. Затем мы создаем новый HashSet и добавляем все элементы массива в HashSet. Если при добавлении элемента в HashSet возвращается false, мы выводим сообщение о том, что был найден дубликат элемента. В этом примере вывод будет:

1
2
Duplicate element found: apple
Duplicate element found: banana


Также можно использовать другие коллекции, такие как TreeSet или HashMap, для поиска дубликатов в массиве, в зависимости от требований вашей задачи.