Как объединить две коллекции java
Перейти к содержимому

Как объединить две коллекции java

  • автор:

Объединить 2 сета

Привет всем. Подскажите пожалуйста простой способ объединения 2-ух коллекций Set. Имею введу из двух сетов получить 1 с общими элементами. Спасибо за ответы.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Связать 2 сета
У меня есть 2 set’а например: M:= и N:= и мне необходимо из них получить такие.

Объединить
"объединить findMax и findMin в одну, сделать через добавление аргумента в эту функцию которая.

Объединить
Всем привет, хотел спросить — Есть такой скрипт (жутко корявый наверно, но по другому не умею.

Объединить с C#
Есть 2 программы основная на С++ и автоапдейтор написанный на С# можно как нибудь объединить 2.

653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Не удается объединить
Не удается объединить разделы жесткого диска. Не распределенные раздел! Скрин управления дисками.

Объединить списки
Всем привет есть вот такое задание, Есть memo1 memo2 например в memo1 цифра 1 а в memo2.

Объединить 2 update
Как объединить эти два запроса? UPDATE table SET a = a — 1 WHERE parentId FROM table.

Объединить 2 массива в 1
А ещё вот такая непонятная штука: Нужно создать массив, который получался бы из элементов двух.

Объединить списки
Здравствуйте! Надо написать программу, которая объединяет два упорядоченных по неубыванию списка.

Объединить 2 программы
Как соединить 2 программы например: program tr1; uses Utils; var i: integer; mb,b.

Как объединить 2 ArrayList в 1 по совпадающему значению (id)?

В первом содержатся продукты, у них есть id, имя, и ссылкой на каждый. Во втором — те же продукты, у них есть id (совпадают с id из первого списка) и их стоимость. Необходимо объединить их по этому самому id.

Пример:
В первом списке:
Product[id=1, url=»SomeURL», name=»Product1″],
во втором:
Product[id=1, price=1000].

Вывод должен быть соответственно:
Product[id=1, url=»SomeURL», name=»Product1″, price=1000].

  • Вопрос задан более года назад
  • 358 просмотров

Комментировать
Решения вопроса 2

azerphoenix

Орхан Гасанлы @azerphoenix Куратор тега Java
Java Software Engineer

Добрый день!
Одно из возможных решений:
— создайте Map
Long — id продукта
— Добавьте элементы первого List’а в Map.
— Итерируйте по второму List’у. Внутри цикла получите товар из Map по идентификатору объекта из второго List’a.
— При помощи сеттеров назначьте значения.
— Если товара с таким ID нет, то добавьте в Map

Ответ написан более года назад
Комментировать
Нравится 2 Комментировать
Dmitry Roo @xez Куратор тега Java
Senior Junior Roo

Собираем из коллекции Map, в которой key — это id, а value — сам объект. Коллектор третьим аргументом принимает merge-функцию:

var productListWithUrlName = new ArrayList(); var productListWithPrice = new ArrayList(); var mergedProducts = Stream.concat(productListWithPrice.stream(), productListWithUrlName.stream()) // Объединяем коллекции .collect(Collectors.toMap(Product::id, Function.identity(), (product1, product2) -> mergeProducts(product1, product2)));

Остается реализовать метод mergeProducts, который будет объединять два Product и возвращать результат.

private Product mergeProducts(Product product1, Product product2) < // TODO :: реализовать объединение двух Product >

Объединение списков в Java

Метод addAll(Collection c) класса java.util.ArrayList добавляет все элементы в указанной коллекции в конец этого списка в том порядке, в котором они возвращаются итератором указанной коллекции. Используя этот метод, вы можете объединить списки в Java.

Пример

import java.util.ArrayList; public class Sample < public static void main(String[] args) < ArrayListlist = new ArrayList(); list.add("JavaFx"); list.add("Java"); list.add("WebGL"); list.add("OpenCV"); System.out.println(list); ArrayList newList = new ArrayList(); list.add("HBase"); list.add("Neo4j"); list.add("MangoDB"); list.add("Cassandra"); list.addAll(newList); System.out.println(list); > >

Итог

[JavaFx, Java, WebGL, OpenCV] [JavaFx, Java, WebGL, OpenCV, HBase, Neo4j, MangoDB, Cassandra]

Средняя оценка 2.3 / 5. Количество голосов: 3

Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

Напишите комментарий, что можно добавить к статье, какой информации не хватает.

Как объединить две коллекции java

С помощью функции plus можно складывать коллекции/последовательности с другими элементами или коллекциями/последовательностями. Данная функция принимает как одиночный элемент, так и коллекцию/последовательность:

fun main() < val people = listOf("Tom", "Bob", "Sam") // добавляем один объект val result1 = people.plus("Alice") println(result1) // [Tom, Bob, Sam, Alice] val employees = listOf("Mike", "Kate") // добавляем коллекцию объектов val result2 = people.plus(employees) println(result2) // [Tom, Bob, Sam, Mike, Kate] >

Обратите внимание, что начальная коллекция, у которой вызывается функция minus() (в примере выше коллекция people), не изменяется, результатом объединения является новая коллекция.

Вместо функции plus() можно использовать оператор +

fun main() < val people = listOf("Tom", "Bob", "Sam") val result1 = people + "Alice" println(result1) // [Tom, Bob, Sam, Alice] val employees = listOf("Mike", "Kate") val result2 = people + employees println(result2) // [Tom, Bob, Sam, Mike, Kate] >

Аналогичным образом можно использовать функцию minus() для вычитания либо одиночного объекта, либо коллекции/последовательности:

fun main() < val people = listOf("Tom", "Bob", "Sam", "Kate") // вычитаем один объект val result1 = people.minus("Bob") println(result1) // [Tom, Sam, "Kate"] val employees = listOf("Mike", "Kate") // вычитаем коллекцию val result2 = people.minus(employees) println(result2) // [Tom, Bob, Sam] >

Начальная коллекция, у которой вызывается функция minus() , также не изменяется, результатом вычитания является новая коллекция.

Вместо функции minus() можно использовать оператор —

val people = listOf("Tom", "Bob", "Sam", "Kate") val result1 = people - "Bob" println(result1) // [Tom, Sam, "Kate"] val employees = listOf("Mike", "Kate") val result2 = people - employees println(result2) // [Tom, Bob, Sam]

Объединение

Для объединения двух разных коллекций/последовательностей в одну применяется функция zip() :

zip(other: Iterable/Sequence): List>/Sequence>

В качестве параметра она принимает другую коллекцию/последовательность и возвращает набор из объектов типа Pair

Например, объединим два списка в один:

val english = listOf("red", "blue", "green") val russian = listOf("красный", "синий", "зеленый") val words = english.zip(russian) for(word in words) println("$: $")

Здесь каждому элементу из списка english сопоставляется элемент на соответствующей позиции из списка russian. Результатом функции будет список из объектов Pair , где свойство first хранит значение из текущей коллекции, а свойство second — значение из коллекции, переданной в качестве параметра:

red: красный blue: синий green: зеленый

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

Функция zip() имеет еще одну версию, которая в качестве второго параметра получает функцию преобразования, применяемую к элементам обоих коллекций/последовательностей:

zip(other: Iterable,transform: (a: T, b: R) -> V): List zip(other: Sequence,transform: (a: T, b: R) -> V): Sequence

val english = listOf("red", "blue", "green") val russian = listOf("красный", "синий", "зеленый") val words = english.zip(russian) "$en - $ru"> for(word in words) println(word)
red - красный blue - синий green - зеленый

Также в Kotlin есть обратная функция — unzip , которая позволяет обратно получить две коллекции

unzip(): Pair, List>
val dictionary = listOf("red", "blue", "green") .zip(listOf("красный", "синий", "зеленый")) val words = dictionary.unzip() println(words.first) // [red, blue, green] println(words.second) // [красный, синий, зеленый]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *