[Java] Object의 key 중복 제거 - DeduplicationUtils

2023. 9. 22. 14:05·🚀 from error to study/Java

 

 

 

 

 

List로 받아온 값 중 특정 key값을 기준으로 중복 삭제 기능을 할 수 있는 유용한 코드

 

 

 

 

 

[사용법]

1) DeduplicationUtils.java 파일 생성
2) DeduplicationUtils.java 파일에 package 경로 적용
3) 기존 리스트 조회
4) 기존 리스트와 같은 객체를 사용하는 리스트 생성
5) 4의 새로운 리스트에 아래 적용법 사용
List<기존list객채> newList = DeduplicationUtils.deduplication(기존리스트이름, 객체명::get키값);

 

 

 

package 패키지 경로;

import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;

/** 
 * @param list 중복이 있는 lsit
 * @param key 중복 여부를 판단하는 키값
 * @param<T> generic type
 * @return list
 * @desc list<Object> 특정 값 기준 중복 제거 
 */
public class DeduplicationUtils {
    public static <T> List<T> deduplication(final List<T> list, Function<? super T,?> key){
        return list.stream().filter(deduplication(key))
                .collect(Collectors.toList());
    }
   private static <T> Predicate<T> deduplication(Function<? super T,?> key){
        final Set<Object> set = ConcurrentHashMap.newKeySet();
        return predicate -> set.add(key.apply(predicate));
    }
}

 

// 게시판의 게시물 리스트를 조회한다
List<BrdArticleListItemVO> atclList = articleService.selectArticleList(listVO);

// 앨범형 - 게시물에 2개 이상의 사진이 들어갈 때 사진 수만큼 게시글 나옴
if ("A".equals(listVO.getParam().getListType())) {
    List<BrdArticleListItemVO> deduplicationList = DeduplicationUtils.deduplication(atclList, BrdArticleListItemVO::getAtclId);
    listVO.setAtclList(deduplicationList);
} else {
    listVO.setAtclList(atclList);
}

 

 

 

 

[사용 전]

▶ 사진의 개수만큼 게시물이 나오고 있음

 

 

 

 

[사용 후]

▶ 사진의 개수에 상관없이 게시물은 1개만 노출됨(어떤 게시물이 노출되게 할지는 추가 조건에 따라 달라질 수 있음)

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)
'🚀 from error to study/Java' 카테고리의 다른 글
  • [JAVA] java.net.MalformedURLException: unknown protocol: c 오류 해결법
  • [Java] NullPointerException을 방지하는 Objects.equals 메서드
  • [java] ArrayList 0번째 인덱스에 새로운 값 넣고 한 칸씩 미는 법
  • [Spring] form 태그를 submit 했을 때 Controller에서 alert창 띄우게끔 유도하는 2가지 방법
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[Java] Object의 key 중복 제거 - DeduplicationUtils
상단으로

티스토리툴바