(1)集合框架的接口类型对比
(2)集合框架的创建
Java中创建List集合:
List<Integer> intList=new ArrayList<>(Arrays.asList(1,2,3));
Kotlin中创建List集合:
/**
* 该函数返回不可变的List集合,只能访问不能添加和删除,该函数可接受0个或多个参数,这些参数将作为集合的元素。
*/
val intList1=listOf<Int>(1,2,3)
/**
* 该函数返回不可变的List集合。该函数与前一个函数的唯一区别是,该函数会自动去掉传入的一系列参数中的null值。
*/
val intList2= listOfNotNull(1,2,3)
/**
* 该函数返回可变的MutableList集合。该函数可接受0个或多个参数,这些参数将作为集合的元素。
*/
val intList3= mutableListOf<Int>(1,2,3)
/**
* 该函数返回可变的ArrayList集合。该函数可接受0个或多个参数,这些参数将作为集合的元素。
*/
val intList4= arrayListOf<Int>(1,2,3)
Kotlin中创建Map集合:
/**
* 创建可变的Map集合
*/
val map1= mapOf<String,Any>("name" to "zhangsan","age" to 20)
/**
* 创建不可变的Map集合
*/
val map2= mutableMapOf<String,Any>("name" to "zhangsan","age" to 20)
注意:这里的Any相当于Java中的Object
Kotlin中创建ArrayList:
val stringList=ArrayList<String>()
(3)集合框架的读写
Java中集合的添加:
List<String> stringList=new ArrayList<>();
for (int i=0;i<10;i++){
stringList.add("num:"+i);
}
Kotlin中集合的添加:
val stringList=ArrayList<String>()
for(i in 0 until 10){
stringList.add("num:$i")
}
或者
val stringList=ArrayList<String>()
for(i in 0 until 10){
stringList+="num:$i"
}
注意:对于List来讲,+=等价于add
Java中集合的删除:
List<String> stringList=new ArrayList<>();
for (int i=0;i<10;i++){
stringList.remove("num:"+i);
}
Kotlin中集合的删除:
val stringList=ArrayList<String>()
for(i in 0 until 10){
stringList.remove("num:$i")
}
或者
val stringList=ArrayList<String>()
for(i in 0 until 10){
stringList-="num:$i"
}
注意:对于List来讲,-=等价于remove
Java中对集合ArrayList的修改和读取:
stringList.set(5,"Hello");
String valueAt5=stringList.get(5);
Kotlin中对集合ArrayList的修改和读取:
stringList[5]="Hello"
val valueAt5=stringList[5]
Java中对集合Map的修改和读取:
HashMap<String,Integer> map=new HashMap<>();
map.put("Hello",10);
System.out.println(map.get("Hello"));
Kotlin中对集合Map的修改和读取:
val map=HashMap<String,Int>()
map["Hello"]=10
println(map["Hello"])
(4)Pair
val pair="Hello" to "Kotlin"
val pair2=Pair("Hello","Kotlin")
val first=pair.first
val second=pair.second
val(x,y)=pair//解构
(5)Triple
val triple=Triple("x",2,3.0)
val tripleFirst=triple.first
val tripleSecond=triple.second
val tripleThrid=triple.third
val (x,y,z)=triple//解构