Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리스트차집합
- 두개리스트비교
- Annotation
- ansible
- string_agg()
- enum
- 권한정책
- enumtype
- 리스트합집합
- 리스트비교
- PostgreSQL
- awsconsole
- 널포인터에러
- Java
- mybatis
- 리스트교집합
- Spring
- lightsail
- list중복제거
- route53
- WordPress
- hashset
- db
- AWS
- 지옥같은git
- 중복제거
- wordpress블로그
- instance생성
- 3tierarchitecture
- anymatch메서드
Archives
- Today
- Total
Anyway
[JAVA] HashSet을 이용하여 list 중복값 제거하기 본문
Set<Long> seqNoList = new HashSet(seqNoListForCheck);
List<Long> newSeqNoList = new ArrayList<Long>(seqNoList);
⚠️ 클라이언트로부터 두 가지의 list를 전달받는데 하나의 list로 합쳐 중복값을 제거해야 했다.
List<Long> seqNoListForCheck = new ArrayList();
for(Long seqNo : reqDto.getFinalSeqNoList()) {
seqNoListForCheck.add(seqNo);
}
for(SeqNoUseYn seqNo : reqDto.getSeqNoUseYnList()) {
seqNoListForCheck.add(seqNo.getSeqNoList());
}
합친 리스트를 가지고 중복값을 제거하는 여러 방법 중 HashSet 방법을 선택했다. 이유는 더 간단했기 때문 ..
set은 본래 중복을 허용하지 않는 객체로 List를 set으로 변경하면 중복이 제거된다.
기존 각각의 list에 {1,2,3} {2,3,4}를 넣고 list에 합쳤을 땐 size가 6이었는데 set에 넣고 list로 옮긴 결과 {1,2,3,4}로 예쁘게 중복이 제거 되었다.
그렇지만 for문도 두 개고 뭔가 더 간단하고 나은 방법이 없나 다시 생각해보았다.
finalSeqNoList 값은 원래 숫자들의 list인지라 그냥 뭉땅 넣어줬다.
문제는 seqNoUseYnList였다. 이 친구는 숫자들의 list가 아니라 객체의 list였다. 객체 중에서도 숫자 필드들만 꺼내서 넣어줘야 하는 상황. 이 부분은 기존대로 for문을 돌리기로 했다.
Set<Long> mergedSet = new HashSet<>(reqDto.getFinalSeqNoList());
for(SeqNoUseYn seqNo : reqDto.getSeqNoUseYnList()) {
mergedSet.addAll(Collections.singleton(seqNo.getSeqNoList()));
}
List<Long> seqNoList = new ArrayList<Long>(mergedSet);
보다 간단해져 마음에 들었다! 🤭
최대한 최적화되게 짜고 싶은데 .. 아직은 너모 쉽지 않다 ..
'Java' 카테고리의 다른 글
[JAVA] anyMatch 메서드 사용하기 (0) | 2024.11.13 |
---|---|
[JAVA] Enum Type XML에서 if문 작성하기 (1) | 2024.11.05 |
[JAVA] list null체크 또는 isEmpty() (1) | 2024.09.27 |