현재 로직은 일정 조건이 충족되면 객체를 생성후 ArrayList에 하나씩 담고 최종적으로는 for문으로 index통해 객체를 하나씩 꺼내오는 방식이고 이게 하나의 메소드로 묶여있음.

이 메소드를 실행하면 Heap space 오류가 발생하더라구

JVM heap 메모리를 늘려주면 되긴 하는데 메모리를 조금 더 효율적으로 사용하고 시간복잡도를 개선하기 위해서 ArrayList가 아니라 Queue를 사용하는게 나을까?


ArrayList보다 Queue를 사용하는게 나을 것 같다고 생각한 이유는 아래와 같음


1. ArrayList는 초기에 할당한 메모리를 넘어서게 되면 새로운 Array를 생성해서 기존 데이터를 옮기는 작업을 수행하게 되고, 이전에 사용한 Array는 GC가 치워주기 전까지는 메모리상에 존재하기 때문에 메모리 낭비가 발생할 수 있다.

2. ArrayList의 데이터 추가 시간복잡도는 O(n)이고 데이터 조회는 O(1)이고, Queue의 데이터 추가 및 데이터 deque 시간복잡도는 O(1)이기 때문에 좀 더 효율적이다.


내가 생각한 이유로 Queue를 사용하는 것이 지금 사례에서 적절할까?