List = 인터페이스
ArrayList = 클래스
ArrayList<Object> list = new ArrayList<>();
List<Object> list = new ArrayList<>();
2가지 모두 같은 결과를 도출합니다.
Generic은 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미합니다.
인스턴스의 형 변환을 통해 내부 디테일과 메모리 함축에서 이점과 성능을 개선시킬 수 있습니다.
List<Object> list = new List<>();
List<Object> list = new LinkedList<>();
도형에 비유하여 풀어보면, 클래스를 생성할 때 도형 타입으로 생성하게 되면 정사각형이 아닌 다른 직사각형, 삼각형 등 도형 인터페이스를 구현한 클래스에서 사용 될 수 있습니다.
하지만 정사각형 클래스로 생성하게 되면 직사각형, 삼각형 등 에서는 사용할 수 없습니다.
List list = new ArrayList(); //-> 도형 list = new 정사각형(); ArrayList list = new ArrayList(); //-> 정사각형 list = new 정사각형();
-> 데이터의 삽입이나 삭제가 필요한 상황에서 List로 선언한 인스턴스를 LinkedList로 바꾸게 되면 아무런 문제없이 LinkedList의 장점을 취할 수 있습니다.