首页 > 解决方案 > 如何使用 Kotlin 验证两个 arrayList 中的相等性

问题描述

在我的 android 应用程序中,使用 kotlin。我有两个arrayList “productsToBuy”包含要购买的产品列表,“variantArrayList”:包含变体列表。要购买的产品可以有产品或变体,在这里,我想知道要购买的产品列表中的变体 ID。我想获得 Id 或布尔属性作为结果。那么,如何验证这两个数组列表与 ID 之间的相等性。以下代码是我的文章,我知道是一个不正确的代码,但我怎样才能更正它以获得我想要的东西以及为什么不正确

    for (i in 0 until variantArrayList.size) {
        val tempVariant = StreamSupport.stream(productsToBuy)
                .filter { o1 -> o1.id.equals(variantArrayList[i].id) }
                .collect(Collectors.toList<PurchaseItemsData>())
        if (tempVariant.size != 0) {
            variantPurchaseItem = true
            break
        }
    }

标签: androidkotlin

解决方案


productsToBuy.map { it.id }.intersect(variantArrayList.map { it.id }).isNotEmpty()

上面的语句将检查是否productsToBuy包含variantArrayList基于id 和返回Boolean。如果您只想获取 id,您可以简单地删除isNotEmpty()

由于我们只确定是否productsToBuy包含来自 的任何项目variantArrayList,我们也可以这样尝试。这也将考虑 ids null

val variantProduct = productsToBuy.asSequence()
        .firstOrNull { product -> variantArrayList.any { product.id == it.id } }
variantPurchaseItem = variantProduct != null

推荐阅读