[Kotlin] array copyOf, clone
·
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("================..
[Kotlin] Array vs ArrayList vs LinkedList vs Queue
·
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..
[Kotlin] data class
·
JVM/Kotlin
언제 써야하나? 클래스 단위로 sementic 한 서로 다른 데이터타입을 갖는 구조체를 정의하기 위해. 주의할 점은? 최소 1개 이상의 파라미터를 받아야한다. 모든 생성자의 파라미터는 val 또는 var 키워드가 붙어야한다. 예제에 쓰일 Data class 어떤 장점이 있나? toString() 자동 정의 print, println 등의 메소드에 data class 로부터 생성된 인스턴스를 인자로 넘길 경우 모든 프로퍼티에 대해 다음과 같은 형식으로 출력해준다. equals(), hashCode() 자동 정의 일반 클래스는 equals 와 hashCode 를 함께 오버라이딩 해줘야하는데 데이터 클래스는 서로 다른 인스턴스의 모든 프로퍼티 값이 동일할 때 Equality , Identity 가 같다고 자동..
[Java, Kotlin] equals, HashCode
·
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..
[Kotlin] HashMap, HashSet, LinkedHashSet
·
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 에 자체적으로 저장을 하지 않는..
[Kotlin] SortedSet, NavigableSet, TreeSet
·
JVM/Kotlin
Set 은 중복이 제거된 집합으로 정의할 수 있다. SortedSet, NavigableSet, TreeSet 은 서로 연관관계가 깊은데 다음과 같은 다이어그램으로 나타낼 수 있다. SortedSet과 NavigableSet 은 인터페이스에 불과하기 때문에 결국 실전에서 사용할 컬렉션은 클래스인 'TreeSet'이다. TreeSet 의 구성 이름이 나타내듯 , Binary Search Tree (Red-BlackTree) 로 구현되어있고 주요 operation 별 시간 복잡도는 다음과같다. Operation Time Complexity Search O (Log N) Insert O (Log N) Delete O (Log N) 이진 트리로 구성되있기 때문에 Log 의 밑은 2다. 그래서 TreeSet 은 ..