Kotlin (16) 썸네일형 리스트형 랜덤 수 추출 알고리즘 Random함수의 파라미터 seed값 랜덤수를 생성하는 함수 nextInt()를 제공하는 Random클래스 객체를 생성할때 seed값이라고 파라미터로 전달할 수 있다. 그리고 그 seed값을 기준으로 랜덤수를 추출하는 알고리즘을 돌리는데 아무것도 넣어주지 않으면 랜덤한 수를 뽑기에 가장 좋은 밀리세컨드값이 디폴트로 들어간다. List를 사용하는 경우1 : list에 랜덤수를 넣는 방식 fun main() { val random = Random() val list = mutableListOf() while(list.size < 6){ var ranum = random.nextInt(45) if(list.contains(ranum)){ continue } list.add(ranum) } println(lis.. 컬렉션2 ) 코틀린 컬렉션의 종류소개(List, Set, Map) Collection Collection는 최상위 클래스로서 read-only 컬렉션들의 동작을 나타내고 있다. ( 사이즈 검색, 아이템 get 등) Collection은 Iterable 인터페이스를 상속하고 있다. ( Iterable는 컬렉션 요소의 데이터를 하나씩 읽어오는 동작을 정의한 인터페이스다. ) 그리고 Collection 타입을 파라미터로 요구하는 메소드에서 파라미터로 Collection을 상속한 다른 컬렉션을 사용할 수 있다. MutableCollection 는 add 와 remove 같은 동작이 가능한 Collection이다. List List는 특정한 순서로 요소들을 저장하고 그들에게 접근할 수 있는 인덱스를 제공한다. 인덱스는 0부터 시작하고 마지막 인덱스는 (list.size - 1).. 컬렉션1 ) 컬렉션 타입과 상속관계 컬렉션(set, list, map) 타입에는 크게 두가지가 있다. read-only(immutable) read-only 컬렉션 타입은 공변적이다. 만약 Rectangle 클래스가 Shape 클래스를 상속했다면 List은 List을 사용할 수 있는곳 어디에서나 쓰일 수 있다. mutable mutable 컬렉션은 공변적이지 않다. 공변적으로 사용할 경우 런타임 오류를 일으킬 수 있다. 만약 MutableList이 MutableList의 서브타입일 경우 Shape을 상속받은 다른 타입을 insert할 경우 Rectangle 타입으로 매개를 넣어야하는것을 위반할 수 있다. 🥕 mutable 컬랙션을 사용한다고 반드시 var를 쓸 필요는 없다. val을 써도 .add해서 리스트를 수정할 수 있다. 어차피 참조.. Scope Function Scope Function 스코프 함수는 코틀린에서 기본으로 지원해주는 함수다. 일반적인 함수가 ()로 호출을 한다면 스코프 함수는 {}로 호출하여 {}안에서 람다식으로 쓸 수 있는 코틀린에서 제공하는 기본 함수다. Apply 함수 Also 함수 Let 함수 With 함수 Run 함수 참조 : https://kotlinlang.org/docs/home.html Kotlin vs Java Null Safe Data Class Lambda expression lateinit lazyinit 데이터 타입 자바와 호환이 가능해야 하므로 자바의 타입들과 일대일 호환이 가능해야한다. 클래스의 동반자 companion object Companion Object 란? 객체를 생성하지 않고도 클래스 내부에 접근할 수 있는 객체, 클래스 내부에 선언하면 클래스 이름만으로 companion object 내부에 선언된 맴버에 접근할 수 있다. class MyClass { companion object Factory { fun create(): MyClass = MyClass() } } companion 키워드로 클래스 내부에 선언할 수 있다. companion객체의 이름은 명시해도 되고 명시하지 않아도 된다. val instance = MyClass.create() 클래스이름으로만 companion 내부에 선언된 맴버에 참조할 수 있다. JAVA static 맴버와의 차이 자바의 static은 클래스의 맴버로서 선언되어 독립적인 객체로 사.. 클래스 계층 구조란 무엇인가 클래스 계층 구조 채소와 같이 광범위한 카테고리가 있고 그 안에서 콩류 라는 더 구체적인 유형의 카테고리를 사용할 수 있는 것처럼 사람들은 자연스레 속성과 동작이 비슷한 항목을 그룹으로 분류하고 그룹 내에서도 일정 유형의 계층 구조를 만든다. 프로그래밍 에서도 계층구조로 클래스를 설계하는데 이때 유용하게 사용되는것이 "상속" 이다. 클래스 계층 구조 : 클래스가 상위 요소와 하위 요소의 계층 구조로 구성된 배열이다. 하위클래스 또는 서브클래스 : 계층 구조에서 다른 클래스 아래에 있는 모든 클래스 상위 클래스 또는 슈퍼 클래스 : 하위 클래스가 하나 이상 있는 모든 클래스 루트 또는 최상위 클래스 : 클래스 계층 구조의 최상위(or root 루트) 에 있는 클래스 상속 : 하위 클래스가 상위 클래스의 모.. IntRange 타입과 난수 발생시키기 주사위 굴릴 숫자 범위 지정하기 val diceRange = 1..6 범위를 이런식으로 줄 수 있다. 100..200 = 100~200,, diceRange는 1, 2, 3, 4, 5, 6 을 값으로 갖고, 타입은 배열이 아닌 IntRange라는 또 다른 데이터 유형으로 시작점 부터 끝점까지의 정수 범위를 나타내는 데이터 유형이다. 시스템에선 이런식으로 해석한다, val diceRange:IntRange = 1..6 램덤 숫자 출력하기 val randomNumber = diceRange.random() // // 근데 IntRange객체를 그자리에서 만들고 random()을 시행할 수 있다 val randomNumber = (1..6).random() 타입이 IntRange인 val에서 랜덤숫자를 생성하.. 7) 클래스 가장 기본적인 모양 객체 생성 객체 생성시 필드(프로퍼티)에 디폴트값 주기 자바 생성자 코드블럭의 대체제 init{} 해당 인스턴스를 생성할때 어떤 동작을 하고싶은지 적는곳 객체 생성의 다형성구현 : 부생성자 정의 객체 생성시 실행 순서 상속 이전 1 2 다음