因此,这是方法的一部分,该方法检查日期范围内的可用房间,并用于返回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()衬垫或类似的东西做些什么?
谢谢
答案 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;