[CS 스터디] String,List,Map

한주영·2023년 3월 13일
0

CS

목록 보기
4/19

String

String

자바에서 문자열을 위한 클래스
문자열과 관련된 작업을 할때 유용하게 사용할수있는 다양한 메서드가 포함되있음.
String 인스턴스는 한번 생성되면 그 값을 읽기만할수있으며
변경할수없다->이러한 객체를 자바에서는 불변객체라고함(immuatable object)

String 클래스 메소드

compareTo()

concat()

indexOf()

trim()

toLowerCase(), toUpperCase()

Stringbuffer vs String Builder

공통 특징

-muatable object(변하는객체) 객체
-문자열 연산 등으로 기존 객체의 공간이 부족하게 되는경우, 기존의 버퍼 크기를 늘리며
유연하게 동작
-제공하는 메서드는 서로 동일

차이점?
동기화 여부
StringBuffer는 각 메서드별로 Sychronized가 존재, 멀티스레드 환경에서도 동기화를 지원
StringBuilder는 동기화를 보장하지 않음

멀티스레드 환경이라면 값 동기화 보장을 위해 Stringbuffer를 사용
단일 스레드 환경이라면 StringBuilder를 사용하는것이좋음

List

구현클래스
LinkedList, Stack, Vector, ArrayList
순서가 있는 데이터의 집합, 데이터의 중복을 허용

LinkedList

데이터를 저장하는 각노드가 이전노드와 다음노드의 상태만 알고있다
불필요한 데이터복사가 없어 데이터를 추가,삭제할때 유리하다
데이터검색시에는 처음부터 노드를 순회해야하기때문에 성능상으론 불리하다

ArrayList

내부적으로 데이터를 배열에서 관리하며 데이터의 추가,삭제를 위해
임시 배열을 생성해 데이터를 복사하는 방법

대량의 자료를 추가 삭제하는 경우에는 그만큼데이터의 복사가 많이일어나므로
성능 저하를 일으킬수있다
반면에 각 데이터는 인덱스를 가지고있기 때문에 한번에 참조가 가능해서 데이터를 검색할때에는
유리한 구현체이다

Map

key,value형태의 방식
인덱스가 없기때문에 배열처럼 순차적으로 해당 요소값을 구하지않고 key를 통해 value를 얻는다
key값은 중복을 허용하지않고 value는 허용한다
구현 클래스

HashTable vs HashMap vs LinkedHashMap vs TreeMap

HashTable

-HashMap클래스와 같은 동작을 하는 클래스
-Map 인터페이스를 상속받음

HashMap

-이름 그대로 해싱을 사용하기때문에 많은양의 데이터를 검색하는데있어서 뛰어난 성능을 보임
-Map 인터페이스를 상속받음

LinkedHashMap

put을 통해 입력된 순서대로 key가 보장된다

TreeMap

-키와 값을 한쌍으로 하는 데이터를 이진검색 트리의 형태로 저장
-이진검색트리는 데이터를 추가하거나 제거하는 등의 기본동작시간이 매우빠르다

LinkedHashMap vs TreeMap

-LinkedHashMap은 입력된 순서를 기억한다, 저장되는 각항목은 Map.Entry클래스를 구현한
Node 클래스로 내부에 before,after 멤버를 갖는 연결리스트 구조를 갖고있다
-TreeMap은 Entry가 트리 구조로 저장되어있다 또한 SortedMap인터페이스를 구현하고있다
key값을 기준으로 정렬

HashMap vs ConcurrentHashMap

HashMap

key, value에 null을 허용
동기화를 보장
멀티쓰레드 환경에서 사용할수있음


ConcurrentHashMap

key,value 에 null허용이 안된다
동기화를 보장한다

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글