이론/알고리즘
[Java] Set과 HashSet(인터페이스 기반 프로그래밍)
블스뜸
2025. 4. 14. 16:04
크게 보면 Set은 인터페이스 HashSet은 클래스이다
둘이 기능은 거의 비슷하지만 HashSet은 Set을 구현한 클래스이기에 다른점이 존재한다

위와 같은 차이가 존재하는데 이 내용을 살펴보게 된이유는 아래의 코드 때문이다
Set<String> set = new HashSet<>();
굳이 Set으로 선언한 이유가 궁금해 찾아보았더니 프로그래밍을 하게될 때 다형성을 위해
인터페이스를 기반으로 프로그래밍하는 것이 좋은 습관이기 때문에 이 코드가 더 좋은 코드라는 설명을 듣게되었다
알게된 이유는 문제풀이를 위해 1회성으로 사용하지만 추후에 프로젝트를 진행하다보면
HashSet을 LinkedHashSet이나 TreeSet 등으로 변환시킬 수 있는 유연성이 필요할 수도 있고
코드의 결합도도 낮출 수 있다
또 Set 자체가 "중복이 없는 컬렉션"이라는 추상적인 개념을 나타내기 때문에
코드를 읽을 때 이해하기 쉬워진다는 이점이 있다
결론적으로, 인터페이스 타입으로 변수를 선언하는 것은 더 유연하고 유지보수가 용이하며 추상적인 코드를 작성하는 데 도움이 된다.