JVM/Kotlin

· JVM/Kotlin
언제 사용하나? 가장 큰 값이나 가장 작은 값을 빠르게 찾아내도록 만들어진 자료규조. 자료구조는? Priority Heap == Heap + Complete Binary Tree Binary Search Tree 와 달리 중복을 허용하고 같은 레벨의 노드간에는 정렬 되있지 않은 느슨한 정렬 상태를 유지한다. 주요 연산 및 시간 복잡도 Operation Time Complexity Insert (add) O (log N) Find (contains) O (N) Find2 (peek) O (1) Delete (poll, remove) O (log N) Delete2 (remove(element)) O (N) Binary Tree 인데 왜 Find 에 O(N) 이 걸리나? PriorityQueue.contai..
· JVM/Kotlin
1차원 배열 복사 copyOf() 메소드를 사용하면 deep copy 가 된다. 새로운 레퍼런스 주소로 별도 공간에 array 가 할당된다. copyOf 로 deep copy 하면 복사된 배열의 값을 수정해도 원본 배열에는 영향을 미치지 않는다. 1차원 배열 복사 Test // 1차원 배열 copy @Test internal fun firstArray() { val nums = intArrayOf(1, 3, 5, 7, 9) val copiedArr = nums.copyOf() // copy 된 배열 값 수정 copiedArr[0] = 0 println("Original Array") for (num in nums) print("$num ") println() println("================..
· JVM/Kotlin
Array Pros index access O(1) Stack 영역에 연속된 메모리 할당으로 인해 캐시 히트율이 높음 Cons 데이터 크기를 미리 예상할 수 있을 때만 적절히 사용가능 삽입/삭제시 index control 해줘야함. ArrayList Pros index 기반 접근시간 O(1) 차례대로 데이터를 추가하거나 마지막 (꼬리) 부터 데이터 삭제는 빠름. Cons 삽입, 삭제시 밀어내기, 당겨오기 때문에 비효율적 Capacity 를 넘어갈 경우 기존 ArrayList 를 새 공간에 할당하며 복사가 일어나 비효율적 LinkedList Java, Kotlin 의 LinkedList 는 내부적으로 DoublyLinkedList 로 구현되어있다. class DoubleLinkedListNode ( var..
· JVM/Kotlin
언제 써야하나? 클래스 단위로 sementic 한 서로 다른 데이터타입을 갖는 구조체를 정의하기 위해. 주의할 점은? 최소 1개 이상의 파라미터를 받아야한다. 모든 생성자의 파라미터는 val 또는 var 키워드가 붙어야한다. 예제에 쓰일 Data class 어떤 장점이 있나? toString() 자동 정의 print, println 등의 메소드에 data class 로부터 생성된 인스턴스를 인자로 넘길 경우 모든 프로퍼티에 대해 다음과 같은 형식으로 출력해준다. equals(), hashCode() 자동 정의 일반 클래스는 equals 와 hashCode 를 함께 오버라이딩 해줘야하는데 데이터 클래스는 서로 다른 인스턴스의 모든 프로퍼티 값이 동일할 때 Equality , Identity 가 같다고 자동..
· JVM/Kotlin
What's equals()? In default code in Object.java, equals() is defined as follows: public boolean equals(Object obj) { return (this == obj); } What's hashcode()? In the same Object.java class, hashcode() is defined as a native function. public native int hashcode(); Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util..
· JVM/Kotlin
HashMap Q. Search 연산시 HashMap 에서는 무조건 bucket index 부터 찾고 LinkedList 를 순회하나? yes, Separate chaining 을 사용하나, java 8 부터는 내부 노드 개수가 8개 이상이면 Red-Black Tree 를 사용한다. static class Node implements Map.Entry { final int hash; final K key; V value; Node next; // .. } 여기서 hash 는 무엇일까.. Q. Wrapper class (Integer, Long) 는 key == value 인가? Q. HashCode 비교 -> Key 비교 아닌가? Q. HashCode 자체는 HashMap 에 자체적으로 저장을 하지 않는..
M_Falcon
'JVM/Kotlin' 카테고리의 글 목록