[Kotlin] groupBy, groupingBy
·
학습 기록/kotlin
1. groupBygroupBy 는 Map> 형태의 결과를 반환한다.1) groupBy(keySelector)컬렉션을 keySelector로 그룹화하여 Map> 형태로 반환val words = listOf("a", "abc", "ab", "def", "abcd")val byLength = words.groupBy { it.length }println(byLength) //{1=[a], 3=[abc, def], 2=[ab], 4=[abcd]}println(byLength.keys) // [1, 3, 2, 4]println(byLength.values) // [[a], [abc, def], [ab], [abcd]]- 컬렉션을 keySelector로 묶어 Map> 형태로 반환- it.length 를 key로 ..
[Kotlin] 플랫폼 타입(Platform type)
·
학습 기록/kotlin
우테코 과제를 하며 낯선 타입을 발견했다.사용자가 입력하는 값은 제공된 유틸의 Console.readLine()을 활용하라고 명시되어 있었다. Console.readLine() 으로 입력을 받으니 해당 변수의 타입이 String!으로 된 것을 확인할 수 있다.엥 느낌표가 두 개도 아니고 한개라고? 💡 Java와 Kotlin의 차이Kotlin은 null-safety를 언어 차원에서 보장한다.즉, 컴파일 시점에 null 여부를 모두 검사한다. 반대로 Java는 Null Safety가 명시되지 않는다.즉, Java 메서드의 매개변수나 반환값은 기본적으로 null일 수도 아닐 수도 있다. 따라서 Kotlin에서 Java 메서드를 사용할 때 그 값이 null인지 아닌 지 정확히 알 수 없다. 🔍 Console..
Intent
·
학습 기록/안드로이드
Intent란?= 컴포넌트 간 통신을 맡는 객체액티비티(Activity): 화면을 구성하는 컴포넌트서비스(Service): 백그라운드 작업을 하는 컴포넌트콘텐츠 프로바이더(Content Provider): 데이터를 공유하는 컴포넌트브로드캐스트 리시버(Broadcast Receiver): 시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트안드로이드 앱은 위 4개의 컴포넌트로 개발하는데 이때 Intent는 컴포넌트를 실행하기 위해 시스템에 전달하는 메세지라고 볼 수 있다. 즉 컴포넌트를 실행하는 정보가 담긴 인텐트 객체를 시스템에 전달하면 컴포넌트가 실행된다.Intent의 종류명시적 인텐트클래스 타입 레퍼런스를 이용하는 것내부 앱의 컴포넌트를 요청하는 인텐트 객체를 만들 때 사용액티비티 간 화면 이동을 구현할..
Recycler View
·
학습 기록/안드로이드
Recycler View 란?`ListView`RecyclerView 이전에는 스크롤되는 리스트를 만들기 위해 ListView를 이용했다.간단하게 리스트를 만들 수 있지만 몇가지 단점이 있다.세로 리스트만 가능데이터가 많아 질 수록 스크롤 시 끊김 발생 : 데이터의 아이템만큼 뷰 생성하기 때문커스터마이징이 제한적이고 복잡함이러한 단점들이 보완된 RecyclerView가 나온 후로는 거의 사용을 안한다. `RecyclerView`많은 데이터 집합을 효율적으로 화면에 표시할 수 있도록 하는 뷰채팅 목록, 게시글과 같이 항목들을 스크롤 가능한 목록으로 구현할 때 사용함.  ListView의 경우 스크롤 할때마다 화면에 표시될 아이템을 새롭게 생성한다. RecyclerView는 화면에 표시될 아이템을 먼저 만들..
Fragment
·
학습 기록/안드로이드
Fragment 란?Activity의 UI를 분할해서 재사용 가능한 컴포넌트로 만든 것하나의 Activity안에 여러 Fragment 추가 가능각 Fragment는 자신만의 생명주기, 레이아웃, 로직을 가질 수 있음왜 Fragment를 쓸까?초기 안드로이드모든 UI가 Activity 중심하나의 화면 = 하나의 ActivityUI를 전환하려면 Intent 로 Activity를 새로 띄워야함문제점Android 기기 다양해지며 태블릿과 같이 화면이 넓은 기기에서 액티비티 클래스에 너무 많은 코드를 작성해야함.Activity 코드의 길이가 길어지며 유지보수가 어려워짐.Fragment 특징Fragment의 장점재사용성: 여러 Activity에서 같은 Fragment 사용 가능유연한 UI 구성: 화면 크기나 방향에..
ViewBinding
·
학습 기록/안드로이드
`findViewById`와 `ViewBinding` 은 XML 레이아웃에 정의된 View를 코드에서 참조하기 위한 방법이다.이때 해당 View 는 XML에서 id를 가지고 있어야 참조가 가능하다. 왜 ViewBinding을 쓸까?`findViewById`뷰의 ID를 수동으로 찾아 참조하는 방식간단한 참조 -> 빠르게 사용 가능 But 뷰가 많아질 수록 코드가 복잡해지고 유지보수가 어려워질 수 있다.잘못된 캐스팅이나 잘못된 ID 참조로 인해 NullPointerException과 같은 런타임 에러가 발생할 수 있다.즉 Type Safety와 Null Safety를 보장하지 않는다.`ViewBinding`자동으로 생성된 바인딩 클래스를 통해 뷰를 참조하는 방식Type Safety 보장바인딩 클래스의 필드들..