如何在Kotlin中填充String []数组

时间:2018-12-12 08:28:55

标签: java android kotlin

我在Java中有一个像这样的方法,我想将其转换为kotlin。我在kotlin中编写了一个方法,但数组未填充,并且返回空数组。我该如何解决?在此先感谢。

Java代码

private String[] getNameOfPersonalityTpye(List<PersonalityTpye> list){
        String[] s = new String[list.size()];
        for(int i = 0; i < list.size(); i++){
            s[i] = list.get(i).getPersonalityTypeName();
        }
        return s;
    }

科林代码

private fun getNameOfPersonalityTpye(list: List<PersonalityTpye>): Array<String?>{
        val s=  arrayOfNulls<String>(list.size);
        for(i in list.indices){
            s[i] = list[i].name;
        }
        return s;
    }

3 个答案:

答案 0 :(得分:4)

使用maptoTypedArray()

private fun getNameOfPersonalityType(list: List<PersonalityType>) = list.map { it.name }.toTypedArray()

我猜是Type而不是Tpye
之后只需检查size。如果为0,则列表为空。
如果作为参数传递的列表可能包含null值,则更改为:

private fun getNameOfPersonalityType(list: List<PersonalityType?>) = list.mapNotNull { it?.name }.toTypedArray()

答案 1 :(得分:1)

这工作得很好

private fun check(){
        val list = ArrayList<String>()
        list.add("json")
        list.add("statham")
        println("value from array "+getNameOfPersonalityTpye(list)[1]) //prints statham
    }

    private fun getNameOfPersonalityTpye(list:List<String>): Array<String?>{
        val s=  arrayOfNulls<String>(list.size)
        for(i in s.indices){
            s[i] = list[i]
        }
        return s
    }

因此您代码中的这个list[i].name;可能是null。否则一切都很好。

答案 2 :(得分:0)

您可以使用true

执行以下操作
Stream