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 |
Tags
- 토비의스프링
- Git
- AWS
- Linux
- TLS
- Spring Legacy Project
- 코딩테스트
- Java
- Client
- SSL
- sample
- centos7
- db
- jdbc
- Jenkins
- github
- WebHook
- 책 정리
- TypeScript
- spring boot
- ssh
- Hibernate
- spring
- DISTINCT
- mariadb
- 프로그래머스
- vagrant
- docker
- window
- EC2
Archives
- Today
- Total
Woopii Vyeolog
[Java] Array 중복 제거 본문
## Github 주소
https://github.com/leewoopyo/java-logic-tests
remove_duplication 패키지
1. Array를 Set으로 변환 후 다시 Array로 변환
Set은 중복을 허용하지 않기 때문에 중복이 있는 Array를 Set으로 변환 시 중복이 제거됨
LinkedSet 은 순서가 보장되는 Set이다
1-1 Array <-> Set
// 배열을 HashSet으로 변환 (중복이 제거됨)
HashSet<String> hashSet = new HashSet<>(Arrays.asList(arr));
// HashSet을 배열로 변환 (중복(Dup)이 제거된 배열)
arr = hashSet.toArray(new String[0]);
1-2 Array <-> LinkedSet
// 배열을 HashSet으로 변환 (중복이 제거됨)
LinkedHashSet<String> linkedhashSet = new LinkedHashSet<>(Arrays.asList(arr));
// HashSet을 배열로 변환 (중복(Dup)이 제거된 배열)
arr = linkedhashSet.toArray(new String[0]);
2. Stream distinct()를 활용하여 중복 제거
Array를 Stream으로 변환 후 distinct()를 활용 하여 중복 제거 후 다시 Array로 변환
// 배열 -> Stream -> distinct (중복제거) -> 배열
arr = Arrays.stream(arr).distinct().toArray(String[]::new);
3. 임시 Array를 이용하여 중복 제거 1
임시 배열을 사용하여 중복제거, 배열상 옆 데이터를 바로 비교하기 때문에 Sort을 한다. 때문에 순서보장 X
// 배열 sorting
//Arrays.sort(arr);
// 임시 배열 선언
String[] tempArr = new String[n];
// 중복 제거 후 array의 길이
int j = 0;
// 임시 배열 구성
for (int i=0; i<n-1; i++){
if (arr[i] != arr[i+1]){
tempArr[j++] = arr[i];
}
}
tempArr[j++] = arr[n-1];
// 중복 제거된 배열 구성
arr = new String[j];
for (int i=0; i<j; i++){
arr[i] = tempArr[i];
}
4. 중복데이터를 치환 후 제거하여 중복 제거
중복데이터를 변환 후 분기처리하여 중복제거
// 중복 제거 후 array의 길이
int k = 0;
// 중복되는 데이터 "" 변환
for (int i=0; i<n-1; i++){
for (int j=i+1;j<n;j++) {
if (!arr[i].equals("") && arr[i].equals(arr[j])) {
arr[j] = "";
k++;
}
}
}
String[] resultArr = new String[n-k];
int tmpindex = 0;
//새로운 배열 생성
for (String str : arr) {
if (!"".equals(str)) {
resultArr[tmpindex] = str;
tmpindex++;
}
}
'java' 카테고리의 다른 글
[Java] 어떤 OpenJdk을 써야 할까?( Temurin vs Zulu vs Corretto) (0) | 2023.10.31 |
---|---|
[Java] Socket 통신, TCP Client 샘플 (0) | 2022.04.02 |
[Java] Socket 통신, Tcp Server 샘플 (0) | 2022.04.02 |
[디자인 패턴] Build Pattern, 빌더 패턴 (1) | 2021.02.24 |
Vector vs Arraylist (0) | 2020.02.28 |
Comments