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
- MSSQL
- https
- 오블완
- apatch poi
- 티스토리챌린지
- NamedEntityGraph
- deserializer
- sendFractionalSeconds
- getEntityGraph
- MYSQL
- load order
- AuditingEntityListener
- @EntityListeners
- mysql equal null
- 운동해서 광명찾자
- yml
- +9:00
- Protecle
- getDateCellValue
- mysql not equal null
- 버전 문자열 비교
- EmbeddedId
- createEntityGraph
- mysql =
- 1*1000
- spring boot
- fractional seconds
- RootGraph
- pooled-lo
- @CreateDate
Archives
- Today
- Total
Hello
점으로 구분된 버전 문자열 비교 본문
728x90
자바에서 점으로된 문자열 비교해 소팅이 필요한 경우가 생겨 maven-artifact 라이브러리를 사용한 내용을 정리하려고 합니다.
maven denpendency
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
<version>3.9.6</version>
</dependency>
version compare test code
public class VersionCompareTest {
@Test
void version_compare_test() {
List<Test1> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Test1 test1 = new Test1();
test1.setSeq(i + 1000);
test1.setName("slot" + i);
test1.setVersion((i / 50) + "." + (i / 20) + "." + i / 10);
list.add(test1);
}
Collections.shuffle(list);
// 1. version으로 내림차순 정렬
// 2. seq로 내림차순 정렬
list.sort(Comparator
.comparing(Test1::getComparableVersion).reversed()
.thenComparing((o1, o2) -> o1.seq > o2.seq ? -1 : 1));
Assertions.assertEquals(1099, list.get(0).getSeq());
// 3. version이 0.1.0 이상인 것만 추출 (80개)
List<Test1> filterList = list.stream()
.filter(x -> x.getComparableVersion().compareTo(new ComparableVersion("0.1.0")) >= 0)
.collect(Collectors.toList());
Assertions.assertEquals(80, filterList.size());
}
@Data
public static class Test1 {
private Integer seq;
private String name;
private String version;
public ComparableVersion getComparableVersion() {
return new ComparableVersion(version);
}
}
}
참고
728x90
'java' 카테고리의 다른 글
[JPA] Service Layer 에서 DataIntegrityViolationException 처리 (0) | 2024.01.10 |
---|---|
[JPA] PK가 아닌 컬럼을 사용하여 연관관계 설정 (0) | 2024.01.03 |
[JPA] JPA Auditing이란 (+Spring Data JPA Auditing) (0) | 2023.11.17 |
[Jackson] JsonSerializer, JsonDeserializer 커스텀하게 사용하는 방법 (0) | 2023.11.08 |
Java MultipartFile to String (0) | 2023.10.25 |