Java将对象类的列表转换为String []

时间:2018-03-11 01:32:33

标签: java arrays list object retrofit2

我有一个名为RoomClassRes的类,它有getter& setter id,name等,在我的主类中我声明了String [] = {}。

使用此代码我使用两个变量

List<RoomClassRes> roomClassResString[] roomClassList

我想在String[]

处填充name所有List<RoomClassRes>

这对我不起作用

@Override
        public void onResponse(Call<List<RoomClassRes>> call, Response<List<RoomClassRes>> response) {
            List<RoomClassRes> roomClassRes = response.body();

            // 1
            Object[] roomClassObj = roomClassRes.toArray();
            for (int i = 0; i < roomClassObj.length; i++){
                RoomClassRes roomClass = (RoomClassRes)roomClassObj[i];
                roomClassList[i] = roomClass.getName();
            }

            // 2
            int i = 0;
            for(RoomClassRes rc : roomClassRes){
                roomClassList[i] = rc.getName();
                i++;
            }

        }

没有任何作用。

1 个答案:

答案 0 :(得分:0)

使用Java 8.您可以在这里使用流API,首先获取RoomClassRes的流,然后将每个房间映射到其名称并转换为数组。

public String[] toStringArray(List<RoomClassRes> rooms) {
    return rooms.stream()
            .map(RoomClassRes::getName)
            .toArray(String[]::new);
}

使用Java 7.首先使用列表大小创建数组,然后填充数组并返回。

public String[] toStringArray(List<RoomClassRes> rooms) {
    String[] result = new String[rooms.size()];
    for (int index = 0; index < rooms.size(); index++)
        result[index] = rooms.get(index).getName();
    return result;
}

请注意,您不能将数组声明为String[] result = {},因为这会创建一个空数组,您可以像上面的函数一样提供数组的大小。