如何拆分数组?例如,我有一个如下字符数组:

['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

现在,我想用可以在位置6上看到的空格拆分array.拆分后,数组将如下所示:

Array1 = ['H', 'e', 'l', 'l', 'o']
Array2 = ['W', 'o', 'r', 'l', 'd']

我确实在here多篇文章中找到了类似的内容,但这不是java或Kotlin中的内容.

我知道我可以这样做:

String str = TextUtils.join(",", arr);

String[] splittedString = str.split(" ");

但是,如果可能的话,我想换一种方式.这会占用大量内存,在大型数组上也需要大约30-40毫秒

如何使用java或Kotlin实现这一点

推荐答案

一个简单的解决方案是将原始数组连接到一个字符串中,按空格拆分,然后再次拆分为字符(在kotlin中):

arr.joinToString().split(" ").map{ it.split() }

这并没有优化,但仍在O(n)(线性复杂度)内.它得益于可读性,这通常是首选,而如果这对您手头的任务至关重要,则应该考虑性能.

Java相关问答推荐

将linkedHashMap扩展到Java中的POJO类

Spring boot:Bean和动态扩展器

无法传递消费者<;>;实例

RESTful框架类字段是安全的还是不安全的

Java 21虚拟线程执行器的性能比池化操作系统线程的执行器差?

使用Mockito进行的Junit测试失败

S,要对Java复制构造函数深度克隆所有属性进行单元测试,最可靠的方法是什么?

Docker不支持弹性APM服务器

在向WebSphere中的文档添加元素时iText挂起

带有Health Check的Spring Boot BuildPack打破了本机映像构建过程

如何使用jOOQ在PostgreSQL中从枚举类型生成Java枚举

如何通过gradle命令行从build.gradle获得Java targetCompatibility

带有提取器的JavaFXObservableList会根据侦听器的存在而改变行为

窗口启动后不久,从java.awt.Graphics disapear创建的矩形

为什么方法接受协变类型的匿名泛型类对象?

找到差异最小的回文

为什么 static Thread.currentThread().getName() 和 getName() 之间有区别?

正在打印可选[值]

在Java中,在Object#equals()调用期间,两个对象是否必须具有相同的hashCode?我们是否需要在 equals() 中比较 hashCode?

当小数位数已知时,BigDecimal 除法有缺点吗?