Java

Java

HashMap, HashTable, ConcurrentHashMap

실시간 알림 기능을 사용할때 Map에 SSE Emitter를 담아야 할 상황이 있었습니다. 이때 ConcurrentHashMap이 사용되어 HashMap, HashTable과 어떤점이 다른지 알아보았습니다. 결론부터 알아보겠습니다. HashMap HashTable ConcurrentHashMap Key/Value null 허용 O X X Thread Safe X O O 스레드 환경 싱글 스레드 멀티 스레드 멀티 스레드 속도 상 하 중 이제 그 이유를 자세히 알아보겠습니다. HashMap HashMap은 Thread Safe하지 않아 싱글스레드에 사용하는것이 좋습니다. 특징 key와 value에 null을 허용 동기화를 보장하지 않음 신뢰성이 낮음 Syncronized를 사용하지 않기때문에 속도가 빠름 p..

Java

Java - 타입추론 Var

타입추론은 타입이 정해지지 않은 변수에 대해 컴파일러가 변수의 타입을스스로 찾아낼 수 있도록 하는 기능입니다. 따라서 Var는 컴파일러가 타입을 유추할 수 있도록 반드시 데이터를 초기화 해줘야 합니다. Java10부터 var를 지원하였고, 11부터는 람다에서도 var를지원합니다. 장점 빠른 개발이 가능합니다. ForEach에서 사용하여 타이핑이 간결해집니다. 변수의 이름에 집중할 수 있습니다. 주의사항 초기화를 해주어야합니다. null은 들어갈 수 없습니다. 로컬 변수에서만 사용 가능합니다. var를 사용하면 타입을 유추할 수 없기 때문에 네이밍을 적절히 잘해야 합니다.

Java

Optional 클래스

Optional 클래스는 Integer나 Double 클래스처럼 'T'타입의 객체를 포장해 주는 래퍼 클래스(Wrapper class)입니다. 따라서 Optional 인스턴스는 모든 타입의 참조 변수를 저장할 수 있습니다. 이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있습니다. 즉, 복잡한 조건문 없이도 널(null) 값으로 인해 발생하는 예외를 처리할 수 있게 됩니다. Optional.empty() VS null Optional 클래스는 값이 없으면 Optional.empty 메서드로 Optional을 반환하빈다. null을 참조하면 NullPointerException이 발생하지만 Optional.empty()는 ..

Java

StringBuffer, StringBuilder

Immutable한 String의 단점 String은 불변하는 객체입니다. String을 더하면 새로운 객체가 생성되고 기존 객체는 GC에 의해 버려집니다. 만약 String을 계속 더한다면, 쓰레기를 계속 채우는 상황이 발생하는 것입니다. 이 경우 메모리 관리가 비효율적이여서 성능에 안좋습니다. StringBuffer, StringBuilder String의 단점을 보안하기 위해 나온 클래스들입니다. StringBuffer, StringBuilder는 append로 전달받은 변수를 메모리에 할당하는 것이 아니라 append가 발생할 때 마다 버퍼의 끝에 문자열을 추가합니다. 마지막으로 toString() 메소드를 통해 버퍼에 저장되어 있는 최종값을 String으로 메모리에 할당합니다. 두 클래스에서 제..

Sol b
'Java' 카테고리의 글 목록 (3 Page)