Kotlin

· JVM/Java
Stream 은 왜 만들어졌나? Java , Kotlin 은 List, Set, Array 등 다양한 Collection 을 제공한다. Collection API 와 Iterate 방식은 표준화 되었지만 각 클래스는 같은 기능을 하는 메소드가 중복 정의되어 있다. List 를 정렬하는 방법만 해도 쉽게 2가지를 떠올릴 수 있다. List.sort Collection.sort 리스트 정렬 public class JavaStreamTest { @DisplayName("Sort list with two way ") @Test void forLoop() { List nums = Arrays.asList(5, 4, 3, 2, 1); nums.sort(new Comparator() { @Override public..
· 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..
M_Falcon
'Kotlin' 태그의 글 목록