공부/Java 복습

Java HashSet, Stream, for문을 통한 중복제거 방법

ChoiDooSic 2021. 9. 28. 11:33

자바를 배워가며 중복제거를 꽤나 여러번 했었는데

중복제거할때의 프로그램의 성능과 그 방법들에 대해서는 자세히 정리해본적이

없는것 같다. 그래서 이참에 중복제거를 하는 여러 방법들과 성능을 측정해보았다.

꽤나 많은 양의 데이터 중복제거를 할때에 속도를 측정해보기위해 List에 많은 양의 과일을 담아주었다

무려 100000000개의 과일이다.... 내 생각에는 많은양 같으나 실제로는 적은양일지도 모르겠다.

(코린이라 이부분은 잘 모르겠다 실무에 나가면 실제로 얼마나 많은양의 데이터를 처리하는지에 대해서는...)

 

시간측정은 currentTimeMillis()를 이용하여 진행하였다.

방법1 : 해쉬셋(HashSet)을 이용한 중복제거
Set은 중복을 허용하지 않는 객체이므로 List에 있는것을 
Set에 다시 담아준다면 중복이 제거된다.

 

방법2 : Stream의 distinct() 를 이용하여 List의 중복제거
Collect는 Stream의 데이터를 변형 등의 처리를 하고 원하는 자료형으로 변경해주는 기능이있기에
Collectors.toList()를 하여 Stream의 요소들을 List인스턴스로 수집하여준다
 
※ ArrayList에 담기위해서는 다운케스팅이 필요하다
(ArrayList<String>)fruits.stream().distinct().collect(Collectors.toList());

 

방법3 : contains() 메서드를 이용하여 같은것이 포함되어있지 않을때에만
요소를 추가하는 방법이다.

 

중복제거를 위한 3가지 방법을 공부해보았는데

여기서 느낀점은 공부할게 아직도 참 많다는 것이다!

내가 알지못하는 더 성능이 좋은 중복제거 방법이 있을지도 모른다

중복제거를 하며 Stream, Collectors, 람다식 이란걸 알게되었는데

이 부분에 대해서는 따로 자세한 공부를 해야겠다는 것이고

어째서 이 방법이 성능이 더 좋은것인지에 대해서는 자세히 알지 못하기때문에

이 부분도 공부를 해야겠다! ㅎㅎ

'공부 > Java 복습' 카테고리의 다른 글

Java 문자열을 뒤집는 4가지 방법 + 시간효율  (0) 2021.09.26
Java ConvertedSecond  (0) 2021.09.25
Java checkWord  (0) 2021.09.24
Java DiscountDay  (0) 2021.09.23
5DiceGame 자바  (0) 2021.09.12