kotlin 将一个list按条件分为两个list(partition )

前言

在安卓开发过程中,我们经常需要将一个列表按照特定条件拆分为两个子列表。随着对语言的深入理解,我发现了一些更高效、更简洁的实现方式,现在与大家分享。

实现

传统Java实现

假设我们有以下列表需要处理:

java 复制代码
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("1");
list.add("2");

使用Java进行条件拆分

java 复制代码
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
list.forEach(item -> {
    if (Objects.equals(item, "1")) {
        list1.add(item);
    } else {
        list2.add(item);
    }
});

使用Java Stream API优化

java 复制代码
List<String> list1 = list.stream()
                        .filter(item -> Objects.equals(item, "1"))
                        .collect(Collectors.toList());
List<String> list2 = list.stream()
                        .filter(item -> !Objects.equals(item, "1"))
                        .collect(Collectors.toList());

Kotlin实现

kotlin 复制代码
val list: MutableList<String> = ArrayList()
list.add("1")
list.add("2")
list.add("1")
list.add("2")

val list1: List<String> = list.filter { it == "1" }
val list2: List<String> = list.filter { it != "1" }

更简洁的Kotlin实现

kotlin 复制代码
val (list1, list2) = list.partition { it == "1" }
相关推荐
期待のcode13 小时前
原子操作类LongAdder
java·开发语言
lly20240614 小时前
C 语言中的结构体
开发语言
JAVA+C语言15 小时前
如何优化 Java 多主机通信的性能?
java·开发语言·php
青岑CTF16 小时前
攻防世界-Ics-05-胎教版wp
开发语言·安全·web安全·网络安全·php
Li emily16 小时前
如何通过外汇API平台快速实现实时数据接入?
开发语言·python·api·fastapi·美股
APIshop16 小时前
Java 实战:调用 item_search_tmall 按关键词搜索天猫商品
java·开发语言·数据库
血小板要健康16 小时前
Java基础常见面试题复习合集1
java·开发语言·经验分享·笔记·面试·学习方法
淼淼76317 小时前
安装jdk1.8
java·开发语言
PfCoder17 小时前
WinForm真入门(23)---PictureBox 控件详细用法
开发语言·windows·c#·winform
Legendary_00817 小时前
Type-C 一拖二快充线:突破单口限制的技术逻辑
c语言·开发语言