Как заполнить массив String [] в Kotlin - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть метод в 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;
    }

Kotlin code

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 голосов
/ 12 декабря 2018

Это прекрасно работает

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.В остальном все нормально.

0 голосов
/ 12 декабря 2018

Вы можете сделать следующее с Stream

private fun getNameOfPersonalityTpye(list: List<PersonalityTpye>): Array<String> {
    return list.stream().map<Any> { e -> e.getPersonalityTypeName() }.toArray() as Array<String>
}
0 голосов
/ 12 декабря 2018

С map и toTypedArray():

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...