最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

如何将文本从文件复制到arraylist或Kotlin中的映射

XAMPP相关 admin 569浏览 0评论
var writer = PrintWriter("abc.txt")
writer.println("John")
writer.println("Emmy")
writer.println("Char")
writer.close()

var reader = File("abc.txt")
reader.forEachLine { println(it) }

但是如何将这些名称存储在地图中,例如john应该是键,Emmy应该是值

2 个答案:

您几乎拥有它:

val list = arrayListOf<String>()
val mapNames = hashMapOf<String, String>()

val reader = File("abc.txt")
reader.forEachLine { list.add(it) }

for (i in 1..list.size / 2) {
    val key = list[2 * i - 2]
    val value = list[2 * i - 1]
    mapNames.put(key, value)
}

一种替代方法是使用功能更强的方法。

val writer = PrintWriter("abc.txt")
writer.println("John")
writer.println("Emmy")
writer.println("Char")
writer.close()

val reader = File("abc.txt")
val mapTruncated = reader.readLines().windowed(2, 2) {
    it[0] to it[1]
}.toMap()

-> {John=Emmy}

readLines()创建一个包含所有行的List<String>

windowed(2, 2)遍历此列表,并为每次迭代访问2个元素。迭代后,它将当前索引增加2。如果它不是一个完整的窗口(给定键没有值),它将截断最后一行。

lambda变换{ it[0] to it[1] }将类型List<String>的窗口转换为Pair<String, String>

可以使用List<Pair<String, String>>将结果列表(toMap())转换为地图。


如果要所有行并在最后一个键中填入例如。 null,您不能做这样的事情。

val mapComplete = reader.readLines().chunked(2) {
    it[0] to it.getOrNull(1)
}.toMap()

-> {John=Emmy, Char=null}

chunked(2)windowed(2, 2, true)的别名。最后一个参数true表示它应包含部分窗口。

转载请注明:XAMPP中文组官网 » 如何将文本从文件复制到arraylist或Kotlin中的映射

您必须 登录 才能发表评论!