【问题标题】:Java Convert List of Object Class to String[]Java将对象类列表转换为字符串[]
【发布时间】:2018-03-11 01:32:32
【问题描述】:

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

在这段代码中,我使用了两个变量

List<RoomClassRes> roomClassResString[] roomClassList

我想在List<RoomClassRes> 填写String[] 的所有name

这对我不起作用

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

        }

没有任何作用。

【问题讨论】:

  • roomClassList 在哪里定义?您的第二种方法应该适用于 AFAIK。
  • String[] roomClassList = roomClassRes.stream().map(RoomClassRes::getName).toArray(String[]::new);
  • 在同一个班级,public class blablabla { String[] roomClassList = {} ... }
  • @RoyHabeahan 然后定义“这对我不起作用”
  • @Aominè 不起作用在源 1.7 中不受支持

标签: java arrays list object retrofit2


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-01-17
    • 2021-12-04
    • 2015-02-25
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2018-04-27
    相关资源
    最近更新 更多