使用.toArray()将ArrayList转换为Int []数组?要么...?

时间:2019-03-14 21:38:18

标签: java arraylist

因此,这是方法的一部分,该方法检查日期范围内的可用房间,并用于返回int []个可用房间号的数组。

        ArrayList roomNums = new ArrayList();
        roomNums.toArray();
        for (Room room: rooms){
            int roomNumber = room.getRoomNumber();
            if(room.getRoomType() == roomType && isAvailable(roomNumber, checkin, checkout)){ // This works fine, ignore it

                roomNums.add(roomNumber); 
            }
        }
        return roomNums.toArray(); // Error here, return meant to be int [] type but it's java.lang.Obeject []

错误发生在roomNums.toArray()的结尾

我看到其他人在做这种衬垫,对他们有用,为什么对我不适合?

roomNums中的每个元素都是一个整数。 (我认为)

打印包含可用房间的整数数组的最快和最简单的方法是什么?我需要做一个循环还是我可以用这个.toArray()衬垫或类似的东西做些什么?

谢谢

2 个答案:

答案 0 :(得分:4)

请勿使用raw类型。将ArrayList roomNums = new ArrayList();替换为

ArrayList<Integer> roomNums = new ArrayList<>();

然后将其返回为Integer[]

roomNums.toArray(Integer[]::new);

如果需要原始数组,则可以使用流来完成:

return roomNums.stream().mapToInt(Integer::valueOf).toArray();

另请参见How to convert an ArrayList containing Integers to primitive int array?

答案 1 :(得分:1)

不幸的是,如果要使用toArray,则需要使用Integer []

    List<Integer> roomNums = new ArrayList<>();
    // code here
    Integer[] arr = new Integer[roomNums.size()];
    return roomNums.toArray (arr);

但是您仍然可以像

一样手动进行操作
    List<Integer> roomNums = new ArrayList<> ();
    // code here
    int[] arr = new int[roomNums.size()];
    for (int i = 0; i < arr.length; i++)
        arr[i] = roomNums.get (i);
    return arr;