-
[JAVA, HashSet] HashSet의 중복체크 관련 글JAVA 2022. 12. 13. 00:19728x90
안녕하세요.
오늘은 코딩테스트 문제를 풀다가 생겨난 궁금점에 직접 테스트해보고 관련 글을 써보고자 합니다.
먼저 해당 문제가 발생한 원인은 프로그래머스 코딩테스트 문제인 '불량 사용자'라는 문제에서 찾았습니다.
관련 의문점은 첨부해드린 링크를 보시면 알 수 있습니다.
[코딩테스트] 프로그래머스 - 불량 사용자(Java, Level3)
안녕하세요~ 제일 열심히 해야될 주말에 설렁설렁 공부하는둥 마는둥하다가 이제서야 이문제를 풀었네요... 사실 푼거라고도 말하기 창피한게 결국 아이디어는 다른 분들이 올린 힌트를 보고
wookku.tistory.com
네 그래서 오늘 알아볼 문제는
Set에 Element추가시 new를 사용하고 안하고의 차이
에 대해 알아보고자 합니다.
테스트케이스는 간단합니다.
temp set을 하나 만들고 tempset하나를 가지고 new를 통해 새로운 set에 넣느냐 or 추가하냐를 통해 결과를 비교해 보겠습니다.
public static void main(String[] args) { // TODO Auto-generated method stub Set<Set<String>> set_new=new HashSet<>(); Set<String> tempset=new HashSet<>(); tempset.add("apple"); tempset.add("banana"); tempset.add("pineapple"); set_new.add(tempset); //set_new.add(new HashSet<String>(tempset)); tempset.remove("apple"); tempset.add("watermelon"); set_new.add(tempset); //set_new.add(new HashSet<String>(tempset)); tempset.remove("watermelon"); tempset.add("apple"); set_new.add(tempset); //set_new.add(new HashSet<String>(tempset)); for(Set<String> searchset:set_new) { System.out.println(searchset); } }
이렇게 작성했을때의 결과문입니다.
조금은 당황했던 부분이 watermelon데이터도 추가되지 않았다는 점.
그리고 같은게 중복으로 담겼다는 점입니다.
다음은 주석처리 돼있는 new HashSet<String>을 이용해 봅시다.
public static void main(String[] args) { // TODO Auto-generated method stub Set<Set<String>> set_new=new HashSet<>(); Set<String> tempset=new HashSet<>(); tempset.add("apple"); tempset.add("banana"); tempset.add("pineapple"); //set_new.add(tempset); set_new.add(new HashSet<String>(tempset)); tempset.remove("apple"); tempset.add("watermelon"); //set_new.add(tempset); set_new.add(new HashSet<String>(tempset)); tempset.remove("watermelon"); tempset.add("apple"); //set_new.add(tempset); set_new.add(new HashSet<String>(tempset)); for(Set<String> searchset:set_new) { System.out.println(searchset); } }
네 이렇게 입니다. 결과를 볼까요?
이렇게 hashset에 대해서도 중복처리가 된걸 알 수 있습니다.
저는 String이런거는 중복처리가 돼도 설마 HashSet까지 되는지 몰랐네요.
잘알아두면 코딩테스트에 쏠쏠히 쓸것 같습니다.
오늘은 간단하게 마무리하겠습니다.
좋은하루 보내시길 바랍니다. :D
'JAVA' 카테고리의 다른 글
[JAVA, HashMap] Key가 Class일때 containsKey사용하기 (1) 2023.11.14 [JAVA, ModelMapper] Embedded Class의 특정 컬럼 매핑 시키기 (0) 2023.09.21 [SpringBoot] IntelliJ 한글깨짐 관련 (0) 2022.08.27 [JAVA, SpringBoot] 404 WhiteLabel에러 관련 글 (0) 2022.08.22