Concatenate string array in Kotlin from data class

Viewed 1748

I have a data Class like

data class Data(val string: String, val state: Boolean)

and that class is an array like

val data = ArrayList<Data>()
data.add(Data("String 1", false)
data.add(Data("String 2", true)
data.add(Data("String 3", true)
data.add(Data("String 4", false)

I need to concatenate only true strings like

val result = "String 2;String 3"

I took a look at joinToString() method, but no idea how to deal with in this case. One more thing is that, I need to get those concatenated strings later back as Array.

How optimal achieve that?

2 Answers

Something as simple as this :

        val result = data.asSequence()
           .filter(Data::state)
           .map(Data::string)
           .joinToString(separator = ";")

Result :

String 2;String 3

Then :

result.split(";")

First, you need to filter your list. And then you can use joinToString method.

val result : String = data.filter { it.state }.joinToString(seperator = ";") { it.string }

After that you can convert the string to list of strings like this :

val list = result.split(";")
Related