我在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;
}
答案 0 :(得分:4)
使用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()
答案 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