ArrayList
Empty ArrayList
fun main() {
val arrayList = ArrayList<String>()
arrayList.add("One")
arrayList.add("Two")
println("......print ArrayList......")
for (i in arrayList) {
println(i)
}
}
- ArrayList는 immutable이라 var를 사용할 수 없다.
- 다만 객체의 내용은 변경할 수 있다.
컬렉션을 사용하는 ArrayLIst
fun main() {
val arrayList: ArrayList<String> = ArrayList<String>(5)
val list: MutableList<String> = mutableListOf<String>()
list.add("one")
list.add("two")
arrayList.addAll(list)
println(".....print ArrayList....")
val itr = arrayList.iterator()
while (itr.hasNext()) {
println(itr.next())
}
println("size of arrayList =" + arrayList.size)
}
- MutableList를 만들어 ArrayLIst에 값을 추가했다.
- iterator은 Set, List, Map에 저장된 값을 일관성있게 꺼내올 수 있다.
ArrayList Get
fun main(args: Array<String>) {
val arrayList: ArrayList<String> = ArrayList<String>()
arrayList.add("one")
arrayList.add("Two")
for (i in arrayList) {
println(i)
}
println("......arrayList.get(1).......")
println(arrayList.get(1)) // index 1에 접근하니 two가 출력된다.
}
- .get에 index값을 입력하니 해당 인덱스의 아이템이 출력된다.
Lambda, 고차함수
fun main() {
b(::a) // 고차함수: 함수 b를 호출하되 함수a를 parameter로 넘겨주려면 콜론 2개
// 최종적으로 a라는 함수가 실행되면서 b가호출한 $str 함수a가 출력된다.
val c: (String) -> Unit = { str -> println("$str 람다함수") }
b(c) //람다 함수,
// val c = { str: String -> println("$str 람다함수") } 라고 축약가능하다.
// 함수를 변수로 사용가능한 장점이 있고, 컬렉션 조작, 스코프함수의 사용에 도움이 된다.
}
fun a(str: String) {
println("$str 함수 a")
}
fun b(function: (String) -> Unit) {
function("b가 호출한")
}
- 함수를 변수로 사용이 가능하다.
- 함수를 고차함수, 람다함수화 하는 과정을 잘 생각해보자