Как вычесть массив из массива?
Необходимо найти разницу, те сравнить 2 массива и оставить только неповторяющиеся элементы. Порядок не важен. Дублирование значений в массивах исключено. Изначально известно что М1 содержит 50 элементов М2, их только нужно оттуда убрать. Долго не было ответа, решил вот так: Спасибо за помощь.
private int[] delArray(int[] a, int[] b) < Listlist_A = new ArrayList(); for (int index = 0; index < a.length; index++) < list_A.add(a[index]); >List list_B = new ArrayList(); for (int index = 0; index < b.length; index++) < list_B.add(b[index]); >list_A.removeAll(list_B); int[] ret = new int[list_A.size()]; for(int i = 0;i
Отслеживать
Ivan Stasiuk
задан 9 июл 2016 в 17:01
Ivan Stasiuk Ivan Stasiuk
470 1 1 золотой знак 4 4 серебряных знака 22 22 бронзовых знака
Нужно больше деталей. Важен ли порядок, возможно ли дублирование значений в исходных массивах. В самом простом случае вам поможет Set.removeAll , но он не сохраняет порядок и не допускает дублирования элементов
9 июл 2016 в 17:35
@soon обновил описание.
9 июл 2016 в 17:41
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
final int[] a1 = ; final int[] a2 = ; List intList = new ArrayList() >; List intList_2 = new ArrayList() >; intList.removeAll(intList_2); for (int a : intList) System.out.println(a);
Отслеживать
ответ дан 9 июл 2016 в 18:20
Shwarz Andrei Shwarz Andrei
12k 1 1 золотой знак 20 20 серебряных знаков 40 40 бронзовых знаков
Насколько я понимаю, ваш вариант в итоге выводит List
9 июл 2016 в 18:29
В случае, если порядок элементов неважен и входные массивы не содержат дублирующихся эллементов, то самый простой путь — создать Set из массива и удалить из него все элементы, содержащиеся во втором массиве:
Проблема лишь в том, как нормально создать Set из массива. Стандартный конструктор HashSet принимает Collection , поэтому необходимо преобразовать int[] в список (к примеру). Если есть поддержка Google Guava, то можно воспользоваться стандартным методом Ints.asLists . Его сложность в документации не указана, но если заглянуть в реализацию, то можно увидеть, что это О(1):
int[] m1 = new int[]; int[] m2 = new int[]; Set s = new HashSet<>(Ints.asList(m1)); s.removeAll(Ints.asList(m2)); s.forEach(System.out::println);
В противном случае можно создать свой метод для создания множества из целочисленного массива:
public static Set asSet(int[] arr) < Sets = new HashSet<>(); for (int x : arr) < s.add(x); >return s; >
Ну а если есть поддержка Java 8 (полагаю, в рамках Android это пока неуместно, но все же), то можно воспользоваться Stream :
Set s = IntStream.of(m1).boxed().collect(toSet()); s.removeAll(IntStream.of(m1).boxed().collect(toList())); s.forEach(System.out::println);
Если элементов немного, то можно обойтись без множеств а просто проверить все элементы (осторожно: квадратичная сложность):
IntStream.of(m1).filter(x -> IntStream.of(m2).noneMatch(y -> x == y)).forEach(System.out::println);
Вычесть массив из массива
Вычесть из одного массива байт другой массив байт
Здравствуйте! Подскажите что нужно сделать чтобы из одного массива байт вычесть другой массив байт!
Поэлементно случайным образом сложить или вычесть 2 массива и получить 3 массив
Задача: Как поэлементно случайным образом сложить или вычесть 2 массива и получить 3 массив
Дан массив, из всех положительных чисел вычесть первый элемент массива
Помогите пожелуйста: Дан массив, из всех положительных чисел вычесть первый элемент массива, из.
5869 / 4746 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
Сообщение было отмечено Maveath как решение
Решение
1 2 3
int[] arr1 = { 1, 2, 3, 4, 5 }; int[] arr2 = { 1, 2, 8, 4, 5, 6, 7, 5, 7 }; int[] arr3 = arr2.Exceptint>(arr1).ToArrayint>(); //из arr2 вычитаем arr1
Как вычесть из одного массива другой?
вот код
Как сделать так, чтобы после нахождения максимума и минимума оставить список без этих двух элементов?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как из одного массива пользовательских объектов вычесть другой
Собственно сабж. нужно это мне тут using assembly .\lib\LiteDB.dll using namespace.
Как вычесть из одного класса другой?
Вопрос такой, есть 2 класса в одном минуты секунды, во втором только секунды, не могу понять как.
Вычесть из одного массива байт другой массив байт
Здравствуйте! Подскажите что нужно сделать чтобы из одного массива байт вычесть другой массив байт!
Из одного списка, поэлементно вычесть другой
Списки могут быть разной длины. Помогите, сам не могу
Присвоить значения переменных, которые были получены из одного TextBox в другой и вычесть из него 1
Нужно присвоить значения переменных, которые были получены из тексбокс, в другой текст бокс и .
2421 / 1463 / 633
Регистрация: 01.11.2021
Сообщений: 2,266
Только будет ошибка, если список меньше 2 элементов.
1 2 3 4 5
a= list(map(int, input().split())) print(a) a.remove(max(a)) a.remove(min(a)) print(a)
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как из одного двумерного массива сформировать другой
отпечатать массив Х в виде матрицы.составить другой массив Y из элементов массива Х, заменив нулями.
Как записать столбец из одного массива в другой?
Помогите решить задачу: Записать второй столбец массива А в массив В. Не знаю как записать столбец.
Как скопировать содержимое одного массива в другой?
Всё тот же магазин. Осталось только одно, копировать содержимое из одного массива, в другой. Я уже.
Как переключить указатель с одного массива на другой
Значит смысл следующий. Есть массив int Massiv; далее будет создан второй массив int Massiv; Я хочу.
Как переместить элементы одного массива в другой?
переписать элементы удовлетворяющих условию -1<=x<=1 из массива X в массив Y Я написал программу.
Как из одного массива вычесть другой
Подскажите, какой функцией можно вычесть из одного массива те значения которое содержит другой массив?
Что-то не могу найти такую функцию.
автор: sim5 (12.02.2009 в 18:39) письмо автору
Что значит вычесть? Получить только те значения, которые не присутсвуют в одном из массивов?
автор: xpom (12.02.2009 в 18:44) письмо автору
Да, да, правильно. какая функция это может?
автор: Trianon (12.02.2009 в 18:46) письмо автору
Где Вы не смогли найти эту функцию?
автор: xpom (12.02.2009 в 19:07) письмо автору
В рнр manual, не нашел, может пропустил. сейчас еще пересмотрю.
автор: sim5 (12.02.2009 в 18:55) письмо автору
Прочтите еще раз внимательно работу функций с массивами, которые начинаются с array_diff.
автор: xpom (12.02.2009 в 19:08) письмо автору
спасибо, сейчас посмотрю еще.
автор: Giga (13.02.2009 в 09:43) письмо автору
Пропустить через цикл-фильтр массив
$array1 = array(1,2,3,4,5);
$array2 = array(3,4,5,6,7);
for($i=0; $i if(in_array($array1[$i],$array2))
echo «$array1[$i] — этот элемент из первого массива содержится во втором!
«;
>
elseif(!in_array($array1[$i],$array2))
echo «$array1[$i] — а этот элемент из первого массива не содержится во втором!
«;
>
>