//원시 타입 배열 클래스로 만들기
//index 0~9 의 10개 공간을 가지고 있는 각 타입의 배열들이다.
var students = IntArray(10)
var longArray = LongArray(10)
var CharArray = CharArray(10)
var FloatArray = FloatArray(10)
var DoubleArray = DoubleArray(10)
var BooleanArray = BooleanArray(10) //초기화 값은 false. null을 가질 수 없다.
//람다식을 통해 생성과 동시에 초기화가 가능하다. (람다식은 ( )밖으로 뺼 수도 있다.)
//제네릭으로 타입을 한정시켜준 배열.
val arr: Array<Int> = Array(3) {0} //arr = [0,0,0]
//개별 원소값을 지정할 수 없지만 람다식을 활용할 수 있다.
val arr: Array<Int> = Array(5,{i -> i*2}) //=>여기서 i는 인덱스 값. arr = [0,2,4,6,8]
//문자 배열 만들기
var stringArray = Array(10, { item -> "" } )// ""(빈공간) 10개가 만들어져있음.
//선언과 동시에 개별 원소 값을 지정해 줄 수 있다.
var dayArray = arrayOf("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")
var anyArray = arrayOf(1, 400.25, "문자", true) // 특정 타입을 지정하지 않은 상태로 다양한 타입의 데이터를 넣는 배열 생성 가능
//마찬가지로 기본 타입 배열도 가능
var arrayInt = intArrayOf(100, 200, 300)
var arrayChar = charArrayOf('A', 'B', 'C')
var arrayBoolean = booleanArrayOf(false, false, true)
//제네릭으로 타입을 한정할 수도 있다.
var intArray = arrayOf<Int>(10,20,30)
var strArray = arrayOf<String>("십","이십","삼십")
//입력(변경)하기
배열명[인덱스] = 값
배열명.set(인덱스, 값)
//꺼내오기
var 배열을저장할변수 = 배열명[인덱스]
var seventhValue = intArray[6]
var 배열을저장할변수 =배열명.get(인덱스)
var tenthValue = intArray.get(9)
//배열에 추가하기
//컬렉션이 아닌 배열은 add를 지원안해서 plus사용
배열명.plus(추가할원소) //=> 요소를 추구한 후 새로운 배열 반환.
배열명 += 추가할원소
// 배열은 크기가 고정되었기 떄문에 값의 추가와 삭제가 불가능 하지만 경우에 따라 다음의 경우들로 새 어레이를 만들 수 있다.
var mutableList = mutableListOf("MON", "TUE", "WED")
var 변수명 = mutableListOf<컬렉션에 입력될 값의 타입>()
//<제네릭>에 해당 되는 타입의 값들을 .add()로 추가할 수 있다.
//사용, 수정, 삭제도 모두 가능하다.
val result = ArrayList<Int?>() //null이 될 수 있는 int값으로 이뤄진 리스트 생성
//참고로 제네릭 안에 타입에 ?를 붙이면 null이 될 수 있는 값으로 이루어진 리스트를 만들 수 있다.
//값 추가하기 (입력하는 순서대로 인덱스 지정) : 공간 자동 증가
배열명.plus // 요소를 추가한 새로운 리스트 반환
배열명.add(추가할 값) //컬렉션은 plus는 물론, add도 지원.
배열명 += 추가할 값
//값 수정(변경)하기
배열명.set(인덱스번호, 수정할값)
//입력된 값 꺼내오기
배열명.get(인덱스번호) //인덱스 지정 필수
//값 삭제하기 : 삭제된 값에 해당하는 인덱스는 비워져있지 않고 그 다음 값들이 당겨져서 채워진다.
배열명.remove(삭제할값)
배열명.removeAt(인덱스번호)
//예를 들어 두 번째 값을 삭제하면 세 번째 값부터 인덱스가 하나씩 감소하면서 빈자리의 인덱스로 이동한다.
//"MON": [0], "TUE": [1], "WED": [2] --> "MON": [0], "WED": [1]
참조 : https://zladnrms.tistory.com/140
list와 mutableList차이
: Read-only인지 아닌지 차이 =>이마저도 컴파일에서는 그냥 둘다 list
mutableList와 ArrayList차이
: 현재 Kotlin에서는 mutableList나 arrayListOf나 둘 다 ArrayList를 반환한다.
배열명.sliceArray(숫자1..숫자2) //인덱스 숫자1 부터 숫자2까지 원소를 배열 형태로 반환
배열명.slice(숫자1..숫자2) //인덱스 숫자1 부터 숫자2까지 원소를 리스트형태로 반환
배열명.size //리스트의 크기(개수) 반환
배열명.sum() //배열값들의 합산 값
배열명.average() //배열값들의 평균 값
배열명.count() // 배열의 요소 개수 세기
배열명.reduce{람다식} // 배열의 첫번째 값부터 시작해서 순서대로 지정한 연산을 수행한 값을 반환
배열명.map{람다식} // 각 요소마다 연산을 수행하여 그 결과를 리스트로 반환한다.
+(플러스)연산자로 동일한 타입의 두 리스트를 하나의 배열로 합칠 수 있다.
-(마이너스)연산자로 앞의 리스트에서 뒤의 리스트 내용을 삭제한 리스트를 얻을 수 있다. (중복 내용도 모두 삭제)
배열명.reverse() //원본 배열 자체를 뒤집는 함수
배열명.reversed() // 배열의 순서가 뒤집어진 리스트 반환
배열명.reversedArray() //배열의 순서가 뒤집어진 배열 반환
배열명.toString() //배열의 내용을 문자열로 변환하여
배열명.sort() //리턴값 없이 원본 배열 자체 오름차순 정렬
배열명.sortDescending() //리턴값 없이 원본 배열 자체 내림차순 정렬
배열명.sorted() //배열을 오름차순으로 정렬해서 리스트로 반환(return값 있음)
배열명.sortedDescending() //배열을 내림차순으로 정렬해서 리스트로 반환(return값 있음)
배열명.sortBy {it.정렬기준} // 단일 정렬기준에 따라 오름차순으로 정렬
배열명.sortByDescending{it.정렬기준} //단일 정렬기준에 따라 내림차순으로 정렬
배열명.sortWith(compareBy({it.정렬기준1},{it.정렬기준2})) //compareBy를 인자로 하여 다중 조건에 따라 정렬
=> 보통 ~edArray가 붙으면 배열로 반환.
=> ~ed로 끝나면 리스트로 반환.
=> 아무것도 붙지 않는 경우 원본 정렬.
배열명.indexOf(값) //해당하는 값의 인덱스 번호를 반환
배열명.disctinct() //중복된 값을 제거하여 리스트로 반환한다. (원본 배열,리스트에는 영향이 없다.)
배열명.first() //배열의 첫번째 값 반환
배열명.first{조건람다식(boolean)} //배열 안에서 조건에 맞는 첫번째 값 반환
배열명.last() //배열의 마지막 값 반환
배열명.last{조건람다식(boolean)} //베열 안에서 조건에 맞는 마지막 값 반환
배열명.contains(값) //해당하는 값이 포함되어 있는지 확인한다. (=> 값 in 배열명 과 같은 표현)
배열명.filter{람다식조건(boolean)} // Boolean이 true일 경우 해당 값은 반환되는 List에 포함
배열명.filterNotNull() // 리스트의 null 값을 걸러준다.
배열명.forEach{람다식} // 리스트의 원소들을 하나씩 반복한다.
배열명.forEachIndexed{인덱스,value} // 해당 리스트의 value와 그 index까지 같이 하나씩 반복한다.