자바를 배워가며 중복제거를 꽤나 여러번 했었는데
중복제거할때의 프로그램의 성능과 그 방법들에 대해서는 자세히 정리해본적이
없는것 같다. 그래서 이참에 중복제거를 하는 여러 방법들과 성능을 측정해보았다.
꽤나 많은 양의 데이터 중복제거를 할때에 속도를 측정해보기위해 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 |