Scala中是否有Arrays.asList()等效方法?如何将String转Array再转List?
Hey,这个问题问得很实用!我来给你详细梳理一下Scala里对应的实现方式:
在Scala中替代Arrays.asList()的方法 & String转Array再转List的实现
一、和Java Arrays.asList()等效的方法
Java的Arrays.asList()主要有两个用途:快速初始化列表,以及把数组转成List。在Scala里我们有更简洁的替代方案:
1. 快速初始化Scala List
如果是想快速把多个元素打包成List,Scala的不可变List伴生对象apply方法就是最直接的替代,写法比Java更清爽:
val fruits = List("apple", "banana", "cherry")
要是你需要可变List(类似Java的ArrayList),可以用Scala的可变集合:
import scala.collection.mutable.ListBuffer val mutableFruits = ListBuffer("apple", "banana") mutableFruits += "cherry" // 支持动态添加元素 // 转成不可变List的话:mutableFruits.toList
2. 数组转Scala List
如果手里已经有一个数组(不管是Scala数组还是Java数组),不用绕Arrays.asList(),直接调用数组的toList方法就能得到Scala的不可变List:
val scalaArray = Array("a", "b", "c") val scalaList = scalaArray.toList // 一步到位 // 如果是Java数组,先转成Scala兼容的集合再处理: import scala.jdk.CollectionConverters._ val javaArray = new java.lang.String[]{"x", "y", "z"} val javaToScalaList = javaArray.asScala.toList
二、String转Array再转List的具体实现
这里分两种常见场景,你可以按需选择:
场景1:把字符串拆成单个字符的List
比如把"hello"转成List('h','e','l','l','o'),Scala里甚至不用手动转Array,直接调用toList就行:
val str = "hello" val charList = str.toList // 结果就是List('h','e','l','l','o') // 要是你一定要先转Array再转List,也可以: val charArray = str.toCharArray val charListFromArray = charArray.toList
场景2:按指定分隔符拆分字符串为子串的List
比如把"apple,banana,cherry"按逗号拆分,先转Array再转List的写法是:
val str = "apple,banana,cherry" val strArray = str.split(",") // 得到Array("apple","banana","cherry") val strList = strArray.toList // 转成Scala List // 一步到位的简化写法: val strListSimplified = str.split(",").toList
如果遇到分隔符连续出现(比如"apple,,banana"),想过滤掉空字符串,可以加个过滤逻辑:
val strWithEmpty = "apple,,banana" val cleanStrList = strWithEmpty.split(",").filter(_.nonEmpty).toList // 结果是List("apple", "banana")
快速总结
- 替代
Arrays.asList()快速初始化:用List(...) - 数组转Scala List:直接调用
array.toList - String转字符List:
str.toList(无需手动转Array) - String按分隔符转子串List:
str.split("分隔符").toList,按需加filter(_.nonEmpty)
内容的提问来源于stack exchange,提问作者Haisam Tarek Elkewidy
相关产品推荐
相关产品推荐

