代码之家  ›  专栏  ›  技术社区  ›  Roy Ryando

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

  •  0
  • Roy Ryando  · 技术社区  · 8 年前

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

    对于这段代码,我使用了两个变量

    List<RoomClassRes> roomClassRes String[] 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 回复  |  直到 8 年前
        1
  •  0
  •   Jose Da Silva Gomes Tarsbir Singh    8 年前

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