1.로직을 통한 중복 제거
contains()를 사용해, list를 for문 돌면서 arrayList에 포함되어있지 않는 데이터만 arrayList에 add 한다.
contains() 함수는 대상 문자열에 특정 문자열이 포함되어 있는지 확인하는 함수다. 대/소문자를 구분한다.
package test;
import java.util.ArrayList;
public class test {
public static void main(String[] args) {
String[] list = {"중복아님", "중복", "중복"};
ArrayList<String> arrayList = new ArrayList();
for(String item : list){
if(!arrayList.contains(item))
arrayList.add(item);
}
System.out.println(arrayList); //arrayList = [중복아님, 중복]
}
}
package test;
import java.util.ArrayList;
import java.util.Arrays;
public class test {
public static void main(String[] args) {
ArrayList<Integer> dataList = new ArrayList(Arrays.asList(1, 2, 3, 4, 5, 1));
for (int i = 0; i < dataList.size(); i++) {
for (int j = 0; j < dataList.size(); j++) {
if (i == j) {
} else if (dataList.get(j).equals(dataList.get(i))) {
dataList.remove(j);
}
}
}
System.out.println(dataList); //dataList = [1, 2, 3, 4, 5]
}
}
2. HashSet 중복제거
HashSet은 Collection 중 Set의 대표적인 파생클래스로 기본적으로 집합으로 중복된 원소를 허용하지 않는다.
HashSet은 순서가 보장되지 않는 자료구조이다.
package test;
import java.util.HashSet;
public class test {
public static void main(String[] args) {
String[] list = {"중복아님", "중복", "중복"};
HashSet<String> hashSet = new HashSet<>();
for(String item : list){
hashSet.add(item);
}
System.out.println(hashSet); //hashSet = [중복아님, 중복]
}
}
3. LinkedHashSet 중복제거
LinkedHashSet은 Collection 중 Set의 파생클래스로 기본적으로 집합으로 중복된 원소를 허용하지 않는다.
LinkedHashSet은 순서가 보장되는 자료구조이다.
package test;
import java.util.LinkedHashSet;
public class test {
public static void main(String[] args) {
String[] list = {"중복아님", "중복", "중복"};
LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
for(String item : list){
linkedHashSet.add(item);
}
System.out.println(linkedHashSet); //linkedHashSet = [중복아님, 중복]
}
}
4. TreeSet 중복제거
TreeSet은 HashSet와 같이 중복된 원소를 허용하지 않고 순서가 보장되지 않는 자료구조이다.
차이점은 기본적으로 오름차순 정렬을 해준다.
package test;
import java.util.TreeSet;
public class test {
public static void main(String[] args) {
String[] list = {"중복아님", "중복", "중복"};
TreeSet<String> treeSet = new TreeSet<>();
for(String item : list){
treeSet.add(item);
}
System.out.println(treeSet); //treeSet = [중복, 중복아님]
}
}
5. Lambdas 중복제거
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class test {
public static void main(String[] args) {
ArrayList<Integer> dataList = new ArrayList(Arrays.asList(1, 2, 3, 4, 5, 1));
List<Object> resultList = dataList.parallelStream().distinct().collect(Collectors.toList());
System.out.println(resultList);
}
}
'Java' 카테고리의 다른 글
[JAVA] 반복문(for문)안에서 삭제 시 생기는 에러(ConcurrentModificationException ) (0) | 2022.01.17 |
---|---|
예외 처리 가이드 - 임도형님 글 정리 (0) | 2021.10.06 |
ResultSet 객체의 커서를 조작하는 메소드 (0) | 2021.05.18 |