String부터 StringBuffer, StringBuilder까지 자바는 문자열을 다루기 위한 3개의 클래스를 제공한다. 개발 초기에는 아무런 생각 없이 String에 값을 계속 더하는 행위를 하지만, 이 방법이 잘못 되었다는 것은 개발이 어느정도 능숙해지고부터이다. String은 불변적인 객체이다보니 동적으로 문자열이 바뀌는 것에 취약하다. 그래서 새로운 문자열을 더할 경우 기존 문자열을 삭제하고 다시 두개의 문자열을 합친 후 String 변수에 보내는데 이때 garbage collector가 발생하게 된다. 최근의 자바 버전에서는 내부적으로 String에서도 문자열을 합칠 때 강제적으로 StringBuilder로 변하게 되는데 아무튼 적당한 문자열을 String에 하는 것은 큰 문제가 되지 않지만..
데이터 분석을 많이 하거나, 대용량의 텍스트를 저장하기에 상당히 유용한 객체로 StringBuffer가 있다. 값을 한번에 저장하는 방법은 String으로 선언된 변수에 한번에 값을 넣는 방법이겠지만, 사이즈가 좀 큰 문자열은 한번에 넣기가 쉽지가 않다. 예를 들어 csv를 만든다고 할 때 그때그때 bw.write로 파일을 내리는 것보다 StringBuffer에 일정만큼 저장한 후 한번에 bw.write에 값을 전달하는 것이 훨씬 속도면에서 유리하다. 그러나 StringBuffer에서 데이터를 새로 담을 때, 아무 생각없이 new StringBuffer()로 계속된 초기화를 한적이 있는데 우연찮게 찾아본 문서를 보고 이 부분에 대해서 좀 더 고민할 필요가 있을 것 같아 포스팅을 공유해보고자 한다. new..
List 형으로 String으로 변환하는 방법이야 for 문으로 list Loop를 돌면서 String에 Add하고 처리하는 고전적인 방법이 있는 반면 stream 을 활용하여 처리하는 방법, 외부 라이브러리를 사용하여 처리하는 방법등 여러가지 방법이 존재할 것이다. 본 강의는 List를 Loop돌아서 String에 Add하는 방법 뿐만 아니라 외부 라이브러리와 Stream 기능을 써서 처리하는 2가지 방법도 추가하여 포스팅 하고자 한다 실험 방법 우선 랜덤형으로 List 형 데이터를 N개 생성한다. 랜덤 소스는 아래와 같다. /** * int를 받아서, 랜덤 알파벳을 출력함 * * @param wordLength * @return */public String randomAlphaWord(int word..