반응형
List에서 특정값이 중복되는 Model을 제거하고 frlndSn을 값으로 정렬을 해야 하는 상황이 발생하여 나름 중복 제거 및 List 정렬한 소스 포스팅해볼게요.
중복 제거가 여러 가지 방법이 있겠지만 전 MAP을 이용했어요. key가 중복되면 마지막 값으로 계속 덮어버리니 마지막 남은 값만 유지가 되어 중복되는 key가 날아가도록 했어요.
List를 담을 때 frlndSn(일련번호)를 주어 순서대로 담았는데 Map을 거치면서 이 순서가 섞이는 거 같아요 List를 출력하니 add 한 순서대로 안 나오네요. 그래서 정렬도 했어요.
for (ReqFundLivestockInfo reqFundLivestockInfo : reqFundBzobInfo.getReqFundLivestockInfoList()) {
//같은 Value일경우 덮어버리기
if (reqFundLivestockInfoMap.get(reqFundLivestockInfo.getValue()) != null) {
ReqFundLivestockInfo tmpReqFundLivestockInfo = reqFundLivestockInfoMap.get(reqFundLivestockInfo.getValue());
reqFundLivestockInfoMap.put(reqFundLivestockInfo.getValue(),reqFundLivestockInfo);
} else {
reqFundLivestockInfoMap.put(reqFundLivestockInfo.getValue(),reqFundLivestockInfo);
}
}
//map을 list로 변환
ArrayList<ReqFundLivestockInfo> sortList = (ArrayList<ReqFundLivestockInfo>) reqFundLivestockInfoMap
.values().stream().collect(Collectors.toList());
//일련번호 asc정렬
Collections.sort(sortList, (arg0, arg1) -> {
return arg0.getFrlndSn().compareTo(arg1.getFrlndSn());
});
위 코드 실행결과 Value값이 중복된 Model은 Map에서 가장 마지막 Value만 남아있고 Map을 List로 변환 시 기존 List정렬순서가 섞이므로(왜 index순번이 바뀌는지는 모르겠습니다) sort를 이용하여 정렬을 다시 하였습니다.
예전 배울 때는 Bubble Sort방식으로 했었는데 간단하게 구현이 되네요.
Collections.sort말고 Arrays.sort도 있는데 이거는 배열 정렬에 사용되는거라 Collections.sort을 사용했어요
반응형
'개발 > Java' 카테고리의 다른 글
Java 단방향,양방향 암호화 (1) | 2021.01.25 |
---|---|
Spring RestTemplate Converter오류 (0) | 2021.01.14 |
org.javers.core.Javers사용하여 Java Model 값 비교 (4) | 2020.11.27 |
egov 3.9버전 mybatis association 사용시 에러(org.apache.ibatis.javassist.util.proxy.SecurityActions.setAccessible) (0) | 2020.11.19 |
Java Jpa Specifications사용하기 (0) | 2020.09.23 |