[Spring / 스프링] 리스트를 new ArrayList<>() 로 생성하는 이유?

반응형

 

일반적으로 리스트를 생성하고 사용할 때  new ArrayList<>() 를 관습적으로 사용한다고 들었고 그렇게 사용했다.

왜 그렇게 사용하는지 궁금해서 찾아봄

 

Array 는 고정 길이 자료구조이지만 ArrayList 는 가변 길이 자료구조

고정 길이 자료구조를 사용할 때는 Array 가 메모리 측면에서 이득이 있다고 한다.

 

ArrayList는 List 인터페이스의 구현체라서 List 의 메소드를 사용할 수 있음

그렇다면 다른 List 구현체보다 ArrayList 를 사용하는 이유는?

일반적으로 비교되는게 LinkedList 인데 LinkedList 는 doubly linked List 이기 때문에 삽입, 삭제가 빠르다

대신 읽는 속도는 ArrayList 보다 느림

ArrayList : O(1)
LinkedList: O(n)

따라서 필요에 따라 사용해주면 된다.

 

ArrayList는 dynamically resizing array 를 implement 하고 있어서 특히 조회가 잦은 Entity 구현 시 많이 사용되는 듯 하다

 

 

챗 GPT 의 말도 들어보자 (의역있음)

"Java 에서 array 대신 ArrayList를 사용해야돼?"

"고건 당신의 use case에 따라 다릅니다. Java의 Array는 고정 길이라서 만들면 사이즈를 바꿀 수 없어요. ArrayList는 다이나믹한 array라서 원하는대로 추가, 삭제가 가능합니다. 만약 미리 길이를 알고, 추가, 삭제를 하지 않으면 array가 더 용이합니다. 그러나, 만약 자주 삽입과 삭제를 할거라면 ArrayList가 더 편할 것입니다. ArrayList는 추가적인 편의기능을 제공합니다. 그러니 dynamic array 가 필요하다면 ArrayList, 그렇지 않으면 array를 사용하십시오."

It depends on your specific use case. Arrays in Java have a fixed size, which means that once you create an array, you cannot change its size. ArrayList, on the other hand, is a dynamic array, which means that you can add or remove elements as needed.If you know the exact number of elements that you will need in your array and you won't be adding or removing elements, then using an array may be more efficient. However, if you need to add or remove elements frequently, then using an ArrayList may be more convenient.[code].size()[/code]It's also worth noting that ArrayList provides additional functionality, such as the ability to use the In summary, if you need a dynamic array, use ArrayList, otherwise, you may use arrays.
반응형