
위 문제를 풀며 학습한 Deque의 구현 방식별 차이점을 정리하고자 한다.Deque란 Double ended Queue로서 양단에서 삽입 삭제가 가능한 자료구조이다.Queue를 상속받는 인터페이스이다.아래 4 종류의 구현체를 통해 구현 가능하다.ArrayDequeCon

First in Last out인 자료구조이다.Java에서 Stack이라는 클래스로 구현할 수 있다.vector를 상속받는 클래스다.추가 메모리 할당시 기존 사이즈의 두 배 만큼 할당한다.그럼 Deque를 활용해서 stack처럼 사용하면 되지 않는가?라는 생각이 들 수

본 글에서는 문자열을 저장하는 객체인 String과 StringBuilder, StringBuffer의 차이점에 대해 알아볼 예정이다.상수로서 immutable한 속성을 가진다.String과 달리 mutable한 속성을 가진다Thread safe하지 않다. \- 다른

Set, Map의 Key와 같이 유일한 원소를 콜렉션에 담아야 하는 경우구현체로 HashSet, HashMap을 주로 사용한다.원시타입의 경우 객체가 아닌 값이기 때문에 hashcode와 equals를 재정의 할 필요가 없다.즉, hash 기반의 Collection에서

List 구현체의 remove() API에 대해 알아보지리스트의 해당 인덱스에 해당하는 원소를 삭제삭제한 원소를 리턴리스트를 앞에서부터 순회하면서 o와 같은 원소를 탐색(equals)처음 탐색된 원소를 삭제삭제 성공시 true 리턴해당원소를 탐색하는 시간 n나머지 원소

JVM 구조 메인이 되는 구성요소 class loader runtime data area execution engine 성능에 직접적인 연관이 있는 구성요소 heap 객체 데이터가 존재한는 영역 GC가 관리하는

알고리즘 문제를 풀던 도중 Integer 타입임에도 불구하고 "=="로 값을 비교했다..소스코드 리팩토링시 Integer는 객체인데 어떻게 "=="로 비교가 되지? 라는 의문이 이 글의 시작이다.Integer 값 비교 검색에서 IntegerCache라는 키워드를 알게되

매번 햇갈리는 String 매소드인 substring()과 replace()부터 String관련된 주요 매소드를 알아보자 String은 immutable하여 문자열 조작시 새로운 문자열이 반환되는 방식이다. charAt(int index) String의 특정 인덱스에

문자열은 객체로 대소비교시 compareTo 매소드가 호출된다.this.charAt(k) - anotherString.charAt(k)문자열 각 인덱스의 char간 비교가 이루어지는 함수숫자가 유니코드로 변환되어 뺄셈이 되기에 얼핏보면 정수형으로 변환하지 않고 될 것

이중 우서순위큐를 구현하기 위해 TreeMap에 대해 알아보자이를 기반으로 둔 TreeSet도 함꼐 알아보겠다.원소 삽입최대값 삭제최소값 삭제위 기능을 가진 큐가 이중우선순위큐다.TreeMap을 사용두 개의 PriorityQueue를 사용(최소힙과 최대힙)Red-Bla

자바 공식문서를 보던중 StirngTokenizer는 legacy로 String.split 사용을 권장하는 문구를 확인했다. 더 권장되는 split을 사용하기 위해 정규표현식을 알아보자.StringTokenizer(이하 ST)의 매개변수에 문자열만 넣었을 때 파싱되는

원시 타입은 값 비교를 통해, 클래스는 eqauls와 hashcode를 통해 동등성을 비교한다. 그렇다면 순서가 없는 컬렉션의 중복은 어떻게 제거하는지 알아보자.{1,2,3}, {1,3,2}, {2,1,3}, {2,3,1}, {3,1,2}, {3,2,1}위 순열을 하나

알고리즘 문제를 해결할때 배열과 리스트 출력할 일이 잦다. 특히 디버깅 시 자주 사용하는데 데이터가 2차원 이상일때 출력하기가 굉장히 귀찮아진다.Arrays.toString(int\[] a)위 매소드를 사용한다면 최하위 일차원 배열은 반복할 필요가 없어진다.List &
추상클래스와 인터페이스에서 공통점과 차이점을 찾기 시작하면 햇갈리기만 하다각 기술의 특징과 목적을 파악하여 알맞게 활용하자애초에 사용하는 키워드가 다르다 interface : implements abstract class : extends인터페이스라는 단어의 의미는 접

자바의 정렬 매소드 Arrays.sort() Collections.sort() compareTo() 개발자가 정렬 기준을 정할 때 Java 8부터 지원하는 람다식을 통해 정렬 기준을 설정할 수 있다. 내림차순 정렬 Arrays.sort(Arr); Collect

정규표현식을 기반으로 문자열을 분리하여 String\[]을 리턴특징정규표현식으로 인한 유연성내부적으로 정규식 패턴을 컴파일하고 매칭하기 때문에 오버헤드 존재느리다지정된 구분자를 기준으로 문자열을 토큰화특징복잡한 패턴 매칭이 어렵다.정규식 사용하지 않아서 오버헤드 없음파

참조객체이면서 Mutable 객체는 재할당 하지 않는 이상 리턴할 필요가 없다.매개변수로 전달될 때 메모리 주소가 전달된다.Primitive 타입이 아닌 것객체의 데이터를 변경할 수 있는 객체ArrayList, PriorityQueue, HashMap, 배열 등 새로운