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" }
相关推荐
喵了meme11 小时前
C语言实战4
c语言·开发语言
码界奇点11 小时前
Python从0到100一站式学习路线图与实战指南
开发语言·python·学习·青少年编程·贴图
9ilk11 小时前
【C++】--- 特殊类设计
开发语言·c++·后端
sali-tec11 小时前
C# 基于halcon的视觉工作流-章68 深度学习-对象检测
开发语言·算法·计算机视觉·重构·c#
生骨大头菜13 小时前
使用python实现相似图片搜索功能,并接入springcloud
开发语言·python·spring cloud·微服务
绝不收费—免费看不了了联系我13 小时前
Fastapi的单进程响应问题 和 解决方法
开发语言·后端·python·fastapi
消失的旧时光-194313 小时前
深入理解 Java 线程池(二):ThreadPoolExecutor 执行流程 + 运行状态 + ctl 原理全解析
java·开发语言
咖啡续命又一天13 小时前
Trae CN IDE 中 Python 开发的具体流程和配置总结
开发语言·ide·python·ai编程
4311媒体网13 小时前
帝国cms调用文章内容 二开基本操作
java·开发语言·php
GSDjisidi14 小时前
东京IT软件会社-(株)GSD|多种技术栈募集,高度人才+20分
开发语言·面试·职场和发展