본문 바로가기
반응형

개발 공부 기록하기/- Kotlin & Java18

[Kotlin] 중첩클래스(Nested Class)와 내부클래스(Inner Class) 차이점 최근에 Spring을 사용하면서 한 가지 문제에 부딪혔습니다. 특정 클래스를 내부 클래스(inner class)로 정의했더니 예상치 못한 에러가 발생했습니다. 그래서 이에 대해 조사하면서 inner class와 일반 class의 차이점을 알게 되었습니다. 이러한 경험을 토대로 이번 포스트에서는 Kotlin에서 inner class와 일반 class의 차이점에 대해 설명하고, 언제 어떤 것을 사용하는 것이 좋은지 살펴보도록 하겠습니다. 1. Outer 클래스에 대한 참조 inner class는 outer class에 대한 참조를 가지며, 이를 통해 outer class의 멤버에 직접 접근이 가능합니다. 이를 이해하는데 있어 아래와 같은 예시를 생각해보면 도움이 될 것입니다. class Outer { pri.. 2023. 8. 1.
Kotlin 리스트 분할 및 병합하기(with chunked, windowed) 아래와 같은 리스트 2개가 있고, 두 개 리스트를 합쳐서 아래와 같은 결과를 만들고 싶다면 어떻게 해야 될까? A List 1 2 3 4 5 6 7 8 9 B List 100 200 300 400 500 600 700 800 900 결과 List 100 200 300 1 2 3 400 500 600 4 5 6 700 800 900 7 8 9 난 아래와 같은 방법을 생각했다. (혹시 더 좋은 알고리즘이나 생각이 있다면 알려주세요) 1. A List와 B List를 각각 3등분으로 나눈다 2. B List를 for문을 돌면서 각 index에 맞춰서 넣어주는 작업을 한다. 3. 합쳐진 list들을 풀어서 평평하게 만드는 만드는 작업을 한다. 코드로 옮겨보면 아래와 같이 된다. 하나씩 살펴보자 1 Line va.. 2020. 9. 2.
간단한 Kotlin extension 활용 - 리스트 랜덤값 가져오기 아래와 같이 간단한 리스트가 있다고 하자 val datas = listOf("A", "B", "C", "D", "E") 이 데이터중 랜덤값을 가져오려면 어떻게 할까? 보통 Random() 함수를 활용해볼수 있다. val random = Random().nextInt(datas.size) datas[random] // 여기에 랜덤한 결과가 담길것이다. A, B, C, D, E 중 하나 이를 코틀린 확장함수를 활용해서 간단하게 다듬어보자 fun List.random() : T { val random = Random().nextInt((size)) return get(random) } 이렇게 만들어 볼 수 있다. List의 확장함수로 random()이라는 함수를 만들었고, 데이터의 형식은 어떤것이 올지 알 수.. 2018. 10. 17.
for, foreach, foreachIndexed 루프탈출 하기 간단한 리스트 데이터가 있다.mutableListOf("밥먹기", "세수하기", "공부하기", "코딩하기", "운동하기", "티비보기")리스트 중 3번째 데이터 까지만 보여주고 나머지는 생략을 하고싶은 경우는 어떻게 할까? 대략적으로 내가 원하는 그림 우선 필요한 정보와 옵션적인 메소드를(?) 선언하고lateinit var todoList: MutableList lateinit var result: StringBuffer var isMadeTitle = false @Before fun 사용할_데이터들_설정() { todoList = mutableListOf("밥먹기", "세수하기", "공부하기", "코딩하기", "운동하기", "티비보기") result = StringBuffer() } private fu.. 2018. 5. 27.
Kotlin in Action Study - 01 코틀린이란?- 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어.- 자바와의 상호운용성을 중시 한다.- 자바가 사용중이면 거의 대부분 코틀린 사용 가능.- 서버, 안드로이드 등에서 사용 코틀린 맛보기data class Person(val name: String, val age: Int? = null) fun main(args: Array) { val people = listOf(Person("영희"), Person("철수", age = 29)) val oldest = people.maxBy { it.age ?: 0 } println("나이가 가장 많은 사람 : $oldest") } 위의 출력 결과는 아래와 같다. 나이가 가장 많은 사람 : Person(name=철수, age=29) 지난포스팅에서 생각나는대.. 2018. 2. 24.
Kotlin을 사용하며 느낀점 6개월 가량 코틀린을 사용하면서 느낀점을 작성하고자 한다. 장점- 코드가 간결해진다.- 코드가 간결해지니 가독성도 증가한다.- 복잡한 로직을 간단하게 짤 수 있다.- 모두가 말하는 널 안정성- 람다, 스트림 사용가능!- 자바와 호환성 100%- ETC... 우선 장점에대해서 나열하면 자바만 사용해온 나로썬 엄청 좋다 이다. 그냥 다 좋다! 왜 그런가 하면 첫번째로 코틀린에 익숙해질수록 코드가 단순해진다. 도대체 무엇이 단순해지는가? 말로만 하지말고 보여달라 우선 안드로이드 View를 사용하려면 항상 아래와 같은 (View)findViewById(R.id.text.. )와 같이 선언을 해줘야하는데 뷰가 하나정도면 괜찮지만 여러개일 경우 여간 귀찮은게 아니다. 반면 코틀린 코드는 ? 이게 끝이냐고? 그렇다 .. 2018. 2. 18.
Kotlin을 시작하며 이 카테고리의 Kotlin에 대한 글들은 대단한것을 하려는것은 아니고 스스로 공부하기 위한 글입니다. 회사에 입사하고 Kotlin을 처음으로 사용해봤다. 이제 6개월정도가 되어서 어느정도 Kotlin을 다루는데는 문제가 없었지만 내가 정말 제대로 사용하고 있는게 맞는지 알 수가 없는 상태인것 같다. 프로젝트의 Kotlin 비중은 높아져만 가는데 현재의 상태처럼 되는대로 사용하다가 언어를 사용할줄만 알고, 나중이 시간이 지나서 다시보면 희생불가능 한 덕지덕지 지저분한 코드를 작성할것이 우려되서 Kotlin을 다시 처음부터 학습해보고자 한다. 어떻게 하면 Kotlin을 조금더 Kotlin스럽게 사용할 수 있을까? 개인학습을 위해 프로젝트 + 책을 정리 해 나갈 예정이다. 이글은 나 자신을 못믿기에 (맨날 한.. 2018. 2. 13.
지뢰찾기 알고리즘 구현 한창 취업을 위해 이력서를 제출하고 있는데, 사전과제로 지뢰찾기를 구현하라는 과제를 받게되어 지뢰찾기에 대해서 고민해보는 시간을 가지게 되었다. 지뢰찾기를 제대로 해본적이 없어서 지뢰찾기를 어떻게 하는지 부터 찾아보게 되었다. 아무대나 빈 네모를 클릭 했을때 숫자가 나오는 것은 그 해당 숫자를 기준으로 ex 1 ) 1의 주변 (자신을 제외한 8칸)에 지뢰가 1개 있음을 표시 1 * ex 2 ) 3의 주변 (자신을 제외한 8칸)에 지뢰가 3개 있음을 표시 * * 3 * 위와 같은 규칙을 가지고 있음을 알 수 있었다. 그렇다 이는 이중 배열을 써야하고 만약 [2,2]의 위치에 숫자 3이 있다고 가정한다면 지뢰는 자기자신( [2,2] ) 를 제외한 배열주소에 어딘가에 지뢰가 3개가 있음을 알 수 있는 것이다... 2017. 6. 16.
스레드 동기화 synchronized에 관해서 출처 : http://noesse.tistory.com/27 요즘 Multi Thread를 다뤄야 하는 작업이 많아져서 데이터의 동기화작업을 해줘야 하는 경우가 많은데,확실하게 개념을 파악하지 못하고 대충 값의 변형이 일어나면 synchronized만 붙여서 사용했던것 같다. 잘못 남용했다가 삽질도 많이 했는데, 이 기회에 확실히 집고 넘어가기 위해 구글링을 하던 중, 좋은 번역을 해주신분이 있어서 이렇게 자료를 가져왔다. 두고두고 생각 안날때마다 보면 좋을것 같아 이렇게 포스팅한다. 이 글은 원 저자 Jakob Jenkov의 허가로 포스팅된 번역물이다.자바 컨커런시와 자바 메모리 모델에 관한 자료를 찾던 중 발견한 이 튜토리얼의 깔금한 이미지와 예제, 명료한 설명에 반하여 번역-소개한다. 자바 컨커런시.. 2016. 7. 5.
반응형