1. [Java] List 중복 제거하기
    1. List 중복제거

Java

[Java] List 중복 제거하기

📝 작성 : 2020.07.09  ⏱ 수정 : 3년 전📚 읽는시간 : 2 분

List 중복제거

List는 기본적으로 중복을 허용합니다. 하지만 때때로 필요에 따라 List의 중복을 제거해야 할 때가 있습니다.
오늘은 List의 중복을 제거하는 방법에 대해 알아보겠습니다.

public class ListDistinct {
public static void main(String[] args) {
List<String> before = new ArrayList<>();
before.add("1");
before.add("1");
before.add("2");
before.add("3");
before.add("3");
before.add("4");
before.add("7");
before.add("6");
before.add("6");
before.add("5");
before.add("5");
before.add("5");
List<String> byLogic = getDistinctByLogic(before);
System.out.println("byLogic : " + byLogic);
System.out.println("-----------------");
List<String> byHashSet = getDistinctByHashSet(before);
System.out.println("byHashSet : " +byHashSet);
System.out.println("-----------------");
List<String> byTreeSet = getDistinctByTreeSet(before);
System.out.println("byTreeSet : " + byTreeSet);
System.out.println("-----------------");
List<String> byStream = getDistinctByStream(before);
System.out.println("byStream : " + byStream);
}
public static List<String> getDistinctByLogic(List<String> list) {
List<String> result = new ArrayList<>();
for (String str : list) {
if (!result.contains(str))
result.add(str);
}
return result;
}
public static List<String> getDistinctByHashSet(List<String> list) {
HashSet<String> tmp = new HashSet<>(list);
List<String> result = new ArrayList<>(tmp);
return result;
}
public static List<String> getDistinctByTreeSet(List<String> list) {
TreeSet<String> tmp = new TreeSet<>(list);
List<String> result = new ArrayList<>(tmp);
return result;
}
public static List<String> getDistinctByStream(List<String> list) {
List<String> result = new ArrayList<>();
//result = list.stream().distinct().collect(Collectors.toList());
result = list.parallelStream().distinct().collect(Collectors.toList());
return result;
}
}


결과

byLogic : [1, 2, 3, 4, 7, 6, 5]
-----------------
byHashSet : [1, 2, 3, 4, 5, 6, 7]
-----------------
byTreeSet : [1, 2, 3, 4, 5, 6, 7]
-----------------
byStream : [1, 2, 3, 4, 7, 6, 5]


반복문과 stream을 이용한 방법은 정렬이 되지 않고 HashSet, TreeSet을 이용한 방법은 정렬되는 것을 볼 수 있습니다.

List => Set으로 들어갈 때 정렬된 채로 들어가는걸로 보입니다. 자세한 건 좀 더 연구해봐야겠습니다.

성능은 반복문 > HashSet > TreeSet > Stream 순이라고 합니다. (실험 사이트)

반응형

'Java' 카테고리의 다른 글

[Java] 람다  (0) 2020.07.12
[Java] String.split(".")  (0) 2020.07.11
[Java]Immutable Object(불변객체)  (0) 2020.07.03
[Java] String = ""; vs new String("");  (0) 2020.07.01
[Java] 배열을 ArrayList로 변환  (0) 2020.06.30