Задача вывести одинаковые элементы в двух массивах, без сортировки данных массивов, без повторений чисел и использования строк, массивов и пакетов, вот что я сделал, но как вывести без повторений понять не могу
public static void main(String[] args) {
int[] number1 = {2, 3, 4, 3, 6, 7, 6, 8, 2, 9};
int[] number2 = {2, 3, 6, 8, 5, 1};
//Прохожу по первому массиву
for (int i = 0; i < number1.length; i++) {
//Сохраняю элемент
int a = number1[i];
//Прохожусь по второму массиву
for (int j = 0; j < number2.length; j++) {
//Сохраняю элемент
int b = number2[j];
//Сравниваю элементы
if (a == b) {
System.out.print("" + a);
break;
}
}
}
}
Перед входом в цикл по j для number2 перебирать еще раз массив number1 c k от 0 и пока k < i-1 и если в этом цикле мы найдем элемент совпадающий с текущим проверяемым в массиве number1 (number1[k] == number1[i]) это будет означать что мы его уже обработали и можно пропускать эту итерацию с помощью continue
mainLoop: for(int i = 0; i < number1.length; ++i) {
for (int k = 0; k < i-1; ++k) {
if(number1[k] == number1[i]){
continue mainLoop;
}
}
int[] number1 = {2, 3, 4, 3, 6, 7, 6, 8, 2, 9};
int[] number2 = {2, 3, 6, 8, 5, 1};
int[] duplicates = Stream.of(number1, number2)
// из каждого массива выкидываем
// повторяющиеся элементы
// и объединяем массивы
.flatMap(arr -> Arrays.stream(arr).distinct().boxed())
// групируем повторяющиеся элементы
// в карту LinkedHashMap<Integer, Long>
// с сортировкой в порядке добавления
.collect(Collectors.groupingBy(Integer::intValue,
LinkedHashMap::new, Collectors.counting()))
// обходим карту
.entrySet().stream()
// отбираем повторяющиеся элементы
.filter(e -> e.getValue() == 2)
// ключи карты - элементы массивов
.mapToInt(Map.Entry::getKey)
// собираем в массив
.toArray();
// выводим результат
System.out.println(Arrays.toString(duplicates)); // [2, 3, 6, 8]
На функционалку ограничения не было))
public static void main(String[] args) {
int[] number1 = {2, 3, 4, 3, 6, 7, 6, 8, 2, 9};
int[] number2 = {2, 3, 6, 8, 5, 1};
Arrays.stream(number1)
.filter(i -> Arrays.stream(number2)
.filter(n -> n == i).findAny().isPresent())
.distinct()
.forEach(System.out::println);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Кто может написать код который убирает из предложения гласные к примеру у нас есть предложение hi my name is Nick а нужно получить h m nm s Nck
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
Пытаюсь запустить Eclipse, появляется окно ошибки, которое перенаправляет меня в лог ошибкиПри открытии лога появляется следующая ошибка
Подскажите, пожалуйста, как реализовать Comparator при сортировке массиваДано: массив строк