반응형
StringBuffer
아래의 코드를 살펴보자
1 2 3 4 5 6 7 | public String joinWords(String[] words) { String sentence = ""; for(String word : words) { sentence += word; } return sentence; } | cs |
이 코드는 문자열 배열을 하나로 합쳐서 리턴해주는 함수이다. 언뜻보아서는 아무런 문제가 없어보이지만 이 코드의 실행 시간은 어떻게 될까?
간단하게 문자열 길이는 전부 x라고 하고 문자열 개수는 n이라고 해보자.
문자열을 연결할때 마다 새로운 문자열 객체가 만들어지고 (sentence), 연결할 문자열의 값이 문자 단위로 복사된다. 그러므로 첫 번째 루프에서 x개의 문자가 복사되고, 두 번째 루프에서 2x개, 세 번째 루프에서 3x개의 문자열이 복사된다. 따라서 결국 소요되는 시간은 O(x+2x+3x+....+nx)의 시간이 소요될 것이다. 최종적으로 O(xn^2)의 시간이 걸린다는 결론을 낼 수 있다.
StringBuffer는 이런 문제를 피할 수 있도록 해준다. StringBuffer는 모든 문자열의 배열을 만들어 두고, 문자열 객체로의 복사는 필요할 때만 수행한다.
=> StringBuffer 시간날때 구현하기
(참고 : 코딩인터뷰 완전분석)
반응형
'프로그래밍 노트 > 자료구조' 카테고리의 다른 글
ArrayList, LinkedList 성능비교 (0) | 2018.11.01 |
---|---|
[Think Data Structures] Java LinkedList 클래스 구현 및 분석 (0) | 2018.11.01 |
[Think Data Structures] Java ArrayList 클래스 구현 및 분석 (0) | 2018.10.31 |
ArrayList(동적으로 크기가 조정되는 배열) - java 구현 (0) | 2018.09.09 |
해시테이블(HashTable) (0) | 2018.09.09 |