ANDROID如何在kotlin / java中基于另一个列表过滤列表?

时间:2020-03-25 13:56:02

标签: java android kotlin

我有两个列表:

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

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

我想要这样的列表:

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

谢谢,不需要按升序排序。

2 个答案:

答案 0 :(得分:1)

您可以使用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运算符。

答案 1 :(得分:0)

如果我的理解正确,那么您希望从两个列表中都输入条目,但是它们只能出现一次。我从您的上一次声明中假设顺序无关紧要。在这种情况下,这对于Set是完美的。 SetCollection,因此您可以像使用List一样遍历所有元素。

编辑

代码段:

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,