Java将对象类列表转换为字符串[]

atmip9wb  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(158)

我有一个名为RoomClassRes的类,它有getter&setter id、name等,在我的主类中,我声明了String[] = {}。
在这段代码中我使用了两个变量
List<RoomClassRes> roomClassResString[] roomClassList
我想在List<RoomClassRes>处用所有name填充String[]
这对我没用

@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++;
            }

        }

什么都不管用。

vsmadaxz

vsmadaxz1#

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

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

对于Java7,首先创建列表大小的数组,然后填充数组并返回。

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 = {}那样声明数组,因为那样会创建一个空数组,需要像上面的函数那样提供数组的大小。

相关问题