public static ArrayList<Double> Cast(double angle,double step,ArrayList<Double> list){
    double x = px + Math.sin(angle/180*Math.PI)*step;
    double z = pz + Math.cos(angle/180*Math.PI)*step;
    if((int)x<0||(int)x>mapWidth-1||(int)z<0||(int)z>mapHeight-1){
        return list;
    }else{
        step+=quality;
        list.add(getHeight(x,z));
        return Cast(angle,step,list);
    } 
}
I am making a raycaster and this function return height of (direction,distance). As I need to cast almost fov/screenWidth times, this is very expensive for my application. How can I make dynamic array faster with recursion function?


Mof the size of the array prior to recursion, aLinkedListwill give you O(1) append versus amortized O(1) for anArrayList. But with a linked list, you will not benefit of O(1) for accessing a random element in the list. If you can provide such an estimateM, simply pass it as theinitialCapacityto the constructor ofArrayList.