Tuang
02/18/2020, 3:20 AMLeo
02/18/2020, 3:51 AMfun MyData.toList(): List<Any> {
val result = ArrayList<Any>()
for (i in 1..Int.MAX_VALUE) {
try {
val getter = javaClass.getMethod("component$i")
val item = getter.invoke(this)!!
result.add(item)
} catch (e: Exception) {
break
}
}
return result
}
Barco
02/18/2020, 3:52 AMmyDataList.flatMap { listOf(it.name, it.country) }
This will map each of your MyData
instances into a list and then flatten out those lists.Tuang
02/18/2020, 3:58 AMflatMap
, i cant retrieve name and country properties, i means it.name, it.country
got error.
here my sample code
fun main() {
val data1 = MyData("mike", "mm")
val data2 = MyData("tike", "bkk")
val combineData = mapOf<String, Any>("Data1" to data1, "Data2" to data2)
val valueOfData = combineData.values
}
data class MyData(val name: String, val country: String)
enum class TestEnum(val str: List<String>) {
TEST1(listOf("a", "b", "c")),
TEST2(listOf("d", "e", "f"));
}
Barco
02/18/2020, 4:01 AMMap<String, Any>,
change this to mapOf<String, MyData>
and you'll be goldenTuang
02/18/2020, 4:15 AMBarco
02/18/2020, 4:18 AMval valueOfData = combineData.values.flatMap {
if (it is MyData) listOf(it.name, it.country) else listOf()
}
Tuang
02/18/2020, 4:19 AM