Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 147

Нужно получить уникальные числа из двух массивов

08.09.2018, 10:51. Показов 10052. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Например массивы а и б в б чила 1 2 3 4 5 а в а 7 8 3 4 5 Уникальными числами должны быть 1 2 7 8 занести эти числа в отдельный массив помогите пожалуйста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.09.2018, 10:51
Ответы с готовыми решениями:

Вывести уникальные элементы двух динамических массивов
Дано два динамических массива одинаковой размерности. Нужно вывести уникальные элементы. Мой код сравнивает элемент первого массива со...

Уникальные числа массива массивов
Есть массив подмассивов целых чисел Надо все встретившиеся числа разбить на такие группы, чтобы внутри одной группы не попали числа,...

Из двух массивов создать третий, включающий уникальные элементы первого, с использованием указателей
Ребята, всем доброго вечера! Помогите мне пожалуйста разобраться с моей бИдой. Я дико извиняюсь, если такая тема мусолилась раньше, я...

21
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.09.2018, 12:21
Лучший ответ Сообщение было отмечено Lunch как решение

Решение

Lunch, если по простому, можно так...
Java
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
27
28
29
30
31
32
package ru.ismoke;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
 
public class Cyber {
 
    public static void main(String[] args) {
        int[] arr1 = {1, 2, 3, 4, 5};
        int[] arr2 = {7, 8, 3, 4, 5};
        List<Integer> list = new ArrayList<>();
 
        for (int item : arr1) {
            if (!isPresent(arr2, item)) list.add(item);
        }
        for (int item : arr2) {
            if (!isPresent(arr1, item)) list.add(item);
        }
 
        Integer[] result = list.toArray(new Integer[0]);
        System.out.println(Arrays.toString(result));
 
    }
 
    private static boolean isPresent(int[] arr, int item) {
        for (int elem : arr) {
            if (elem == item) return true;
        }
        return false;
    }
}
1
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
08.09.2018, 12:39
iSmokeJC,
А если без списков только массивами и с разными длинами?
Вы не проверяете на уникальность чисел внутри самих массивов (не только между массивами).
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.09.2018, 12:44
ViktorFX, ок. Покритиковал - решение в студию.
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
08.09.2018, 12:54
iSmokeJC, не принимайте на свой счет )))
просто я вже взялся решить в массивах, думал с наскока пока не занят решу, а оно оказалось сложнее (для меня) чем сначала показалось(
0
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 147
08.09.2018, 15:27  [ТС]
конечно намного лучше когда разные длины

Добавлено через 29 секунд
но в принципе особо на этом не акцентировалось
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
08.09.2018, 15:55
iSmokeJC,
Java
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
27
28
public class MyClass {
    public static void main(String[] args) {
        int[] a = {1,2,3,4,5,8};
        int[] b = {3,4,5,6,7,8,9};
        MyClass.newArray(a, b);
    }
    static void newArray(int[] a, int[] b) {    
        Item[] sumArray = new Item[a.length + b.length];
        for(int i=0; i<a.length; i++) 
            sumArray[i] = new Item(a[i]);
        for(int i=a.length, j=0; i<b.length+a.length; i++, j++) 
            sumArray[i] = new Item(b[j]);
        for(int i=0; i<sumArray.length; i++) 
            if(sumArray[i].isUnicueInArray(sumArray)) 
                System.out.println(sumArray[i].i);
    }
}
class Item {
    public Item(int i) { 
        this.i = i;
    }
    int i, count=0;
    boolean isUnicueInArray(Item[] a) {
        for(Item j : a) 
            count = this.i==j.i? count+1 : count;
        return count == 1;
    }
}
Кликните здесь для просмотра всего текста
1
2
6
7
9

компилил в браузере, и ошибку искал выводом в консоль.
А вот эта строчка мне забрала уйму времени
Java
1
            count = this.i==j.i? count++ : count;
(count = count++) != (count = count+1) ((
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.09.2018, 16:42
Лучший ответ Сообщение было отмечено Welemir1 как решение

Решение

Не по теме:

Цитата Сообщение от ViktorFX Посмотреть сообщение
вот эта строчка мне забрала уйму времени
Эта строчка способна взорвать моск!




Цитата Сообщение от Lunch Посмотреть сообщение
лучше когда разные длины
Java
1
2
3
4
5
6
7
8
9
10
11
12
Integer[] arr1 = {1, 2, 3, 4, 5, 3, 4, 5, 6, 7, 5, 4, 8, 3, 6, 5, 4};
        Integer[] arr2 = {7, 8, 3, 4, 5};
 
        List<Integer> list1 = Arrays.asList(arr1);
        List<Integer> list2 = Arrays.asList(arr2);
 
        Integer[] resultArray = Stream.concat(list1.stream(), list2.stream())
                .distinct()
                .filter(x -> !list2.contains(x) || !list1.contains(x))
                .toArray(Integer[]::new);
 
        System.out.println(Arrays.toString(resultArray));
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
08.09.2018, 19:38
iSmokeJC, wait a minute! ты изначально массивы создал типа интегер, начни ка с чистых интов.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.09.2018, 19:51
Welemir1,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
        int[] arr1 = {1, 2, 3, 4, 5, 3, 4, 5, 6, 7, 5, 4, 8, 3, 6, 5, 4};
        int[] arr2 = {7, 8, 3, 4, 5};
 
        List<Integer> list1 = Arrays.stream(arr1)
                .boxed()
                .collect(Collectors.toList());
 
        List<Integer> list2 = Arrays.stream(arr2)
                .boxed()
                .collect(Collectors.toList());
 
 
        Integer[] resultArray = Stream.concat(list1.stream(), list2.stream())
                .distinct()
                .filter(x -> !list2.contains(x) || !list1.contains(x))
                .toArray(Integer[]::new);
 
        System.out.println(Arrays.toString(resultArray));
    }
Добавлено через 4 минуты
Можно, в принципе, и в одну строчку все скучковать...
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
08.09.2018, 20:19
iSmokeJC, уже не так лаконично
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Можно, в принципе, и в одну строчку все скучковать...
давай, посмотрим
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.09.2018, 21:09
Цитата Сообщение от Welemir1 Посмотреть сообщение
давай, посмотрим
Издеваешься?
Java
1
2
3
4
5
6
7
Integer[] result = Stream.concat(Arrays.stream(arr1).boxed(), Arrays.stream(arr2).boxed())
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
                .entrySet()
                .stream()
                .filter(x -> x.getValue() == 1)
                .map(Map.Entry::getKey)
                .toArray(Integer[]::new);
3
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 147
08.09.2018, 21:12  [ТС]
поделитесь пожалуйста как вы учитесь программировать?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.09.2018, 21:17
Цитата Сообщение от Lunch Посмотреть сообщение
как
постоянно...

А серьезно - книжки, гугл и практика.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
08.09.2018, 21:19
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Издеваешься?
нет, просто у меня коротко решить не получилось, жду науки) этот вариант интереснее, согласись. правда ты вернул массив Интегер опять, а по заданию массив интов)
0
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 147
08.09.2018, 21:27  [ТС]
если что-то непонятно что нужно делать в первую очередь ?

Добавлено через 48 секунд
Это нормально задавать вопросы на форуме или лучше окунуться в учебники и какие вы читаете
?

Добавлено через 41 секунду
практику вы набиваете здесь на форуме решая чужие задачи?
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
08.09.2018, 21:28
100% времени думаю что никто не может учится,
с другой стороны непонимать ответов на форуме тоже не вариант.

Я еще не добрался к стримам ((( и не понимаю хотя очень нравится
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.09.2018, 22:07
Lunch, задавать вопросы - это абсолютно нормально. Форум для этого и создан.
Помогая другим, учишься и сам.
А так, возьми какую-нибудь книгу, вдумчиво ее читай, прорабатывай. По всем непоняткам - гугл. Если что-то не работает или работет, да не так - форум.

Добавлено через 56 секунд
Литература по Java
0
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 147
08.09.2018, 22:11  [ТС]
ясно спасибо
0
 Аватар для sdasdaw
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
08.09.2018, 23:17
небольшое улучшение:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private static int[] identic(int[]... arrays) {
    return Stream.of(
            Arrays.stream(arrays)
                    .map(i -> Arrays.stream(i).boxed())
    )
            .flatMap(i -> i)
            .flatMap(i -> i)
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
            .entrySet()
            .stream()
            .filter(x -> x.getValue() == 1)
            .mapToInt(Map.Entry::getKey)
            .toArray();
}
Добавлено через 54 минуты
не используя entrySet:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private static int[] identic(int[]... arrays) {
    List<Integer> a = Stream.of(
            Arrays.stream(arrays)
                    .map(i -> Arrays.stream(i).boxed())
)
            .flatMap(i -> i)
            .flatMap(i -> i)
            .collect(Collectors.toList());
 
    return a.stream()
            .filter(b -> Collections.frequency(a, b) == 1)
            .mapToInt(i -> i)
            .toArray();
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2018, 23:17
Помогаю со студенческими работами здесь

Нужно получить уникальные значения из массива
Дорогие форумчане, я совсем не программист, но есть задача, которую нужно решить. Надеюсь на вашу помощь. Задача заключается в том, что...

Нужно получить все уникальные значения из поля MySQL
День добрый! Народ, подскажите, сложилась такая задача: нужно получить все уникальные значения из поля мускл? В пхп есть функция,...

Из двух массивов получить третий по правилу
задача №5 на фото пытался решить, но не получается const n=10;var a,b:array of real; c:array of real; i:integer; begin ...

Нужно сформировать массив из двух других массивов
Есть 2 массива: A, B. Сформировать массив C упорядоченный по возрастанию путем перезаписи информации из массивов A и B. Как можно...

Из двух массивов, упорядоченных по возрастанию, получить третий
Из двух массивов A(N) и B(M), упорядоченных по возрастанию, получить за один просмотр массив С(К), также упорядоченный по возрастанию, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru