본문 바로가기

알고리즘&자료구조

[자료구조] List, Set, Map 차이/ StringBuffer StringBuilder 차이

String StringBuffer StringBuilder 차이점(http://ooz.co.kr/298)


String - 불변, 추가되는 경우 새로운 객체가 만들어져서 복사되게 하고 그 새로 만들어진 객체를 참조하게 함. Java 가비지컬렉션으로 원래 있던 놈은 수거

StringBuffer -  저장 공간 유연, 멀티 스레드 환경에서 사용하면 좋음, 동기화를 지원하기 때문에

StringBuilder - 저장 공간 유연, 단일 스레드 환경에서 사용하면 좋음, 동기화 지원 안함. jdk 1.5 이후로는 String도 StringBuilder 지원함




List, Set, Map 차이(http://j2yes.tistory.com)


Set - 객체 중복 허용하지 않는다. (집합이다)

List - 인덱싱, 중복 허용

Map - 키와 데이터 값을 저장



- ArrayList  vs Vector(http://seeit.kr/36)


ArrayList는 동기화를 보장하지 않고, Vector는 동기화를 보장한다.

ArrayList는 동기화를 보장하지 않는 대신 가볍고, 웹의 경우 서버가 동기화를 보장해 주므로 ArrayList를 사용하면 된다.

List list = Collections.synchronizedList(new ArrayList()); 이렇게 해주면 Vector처럼 이용.

제공되는 함수는 동일하다. get, add, remove, contains...

추가 삭제를 할 경우, 데이터를 더 큰 배열에 혹은 작은 배열에 복사하는 방식이므로 성능이 매우 떨어진다. 
Vector의 경우 용량이 다 차면 두배로 크기가 늘어남.



- LinkedList vs (ArrayList, Vector)

LinkedList는 객체의 추가 삭제가 많을 때 유리하다.

ArrayList와 Vector는 데이터 항목 검색이 많을 때 유리


LinkedList로 Stack과 Queue 구현이 가능하다



- HashMap과 HashSet의 차이 (http://plaboratory.org/archives/1638)

Set과 Map의 차이..




- 정리 (출처 : http://kscho.tistory.com)





'알고리즘&자료구조' 카테고리의 다른 글

[자료구조] 트리(Tree)란? (미완)  (2) 2017.11.16