ANDROID как отфильтровать базу списка по другому списку в kotlin / java? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть два списка:

list_1 = [1, 2, 3, 4, 5]

list_2 = [1, 3, 5, 6, 7]

Я хочу получить такой список:

list_3 = [1, 2, 3, 4, 5, 6, 7]

Нет необходимости сортировать в порядке возрастания, спасибо.

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Вы можете сделать что-то вроде этого, используя union оператор

fun temp()
{
    val firstList = arrayListOf(1,2,3,4,5)
    val secondList = arrayListOf(1,3,5,6,7)
    val finalList = firstList.union(secondList)
    println("First list : ${firstList}")
    println("Second list : ${secondList}")
    println("Final list : ${finalList}")
}

В secondList содержит общие элементы 1,3 and 5 как firstList, он был удален в finalList. Вы также можете использовать distinct оператор в соответствии с вашими потребностями.

0 голосов
/ 25 марта 2020

Если я правильно понимаю, вам нужны записи из обоих списков, но они должны появиться только один раз. Из вашего последнего утверждения я предполагаю, что порядок не имеет значения. В этом случае это было бы идеально для Set . Set - это Collection , поэтому вы можете выполнять итерацию по всем элементам, как, например, с помощью List .

* 1011. * РЕДАКТИРОВАТЬ

Фрагменты кода:

Integer[] a = {1,2,3};
Integer[] b = {2,3,4};

Set<Integer> s = new HashSet<>();

s.addAll(Arrays.asList(a));
s.addAll(Arrays.asList(b));

for (int i : s) {
    System.out.print(i + ", ");
}
System.out.println();

Если ваши целые числа уже находятся в примитивном массиве:

int[] c = {1,2,3};
int[] d = {2,3,4};

Set<Integer> S = new HashSet<>();

S.addAll(Arrays.asList(Arrays.stream(c).boxed().toArray(Integer[]::new)));
S.addAll(Arrays.asList(Arrays.stream(d).boxed().toArray(Integer[]::new)));

for (int i : S) {
    System.out.print(i + ", ");
}
System.out.println();

Для обоих из них вывод:

1, 2, 3, 4, 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...