美文网首页
[学习]拥抱kotlin(七)

[学习]拥抱kotlin(七)

作者: 吴敬悦 | 来源:发表于2021-02-17 22:45 被阅读0次

    我发现我在平时的使用中,连数组,集合很多我都非常懵逼,明明在 javajavascript 中都是很容易的。
    如果在 java 中,那么声明一个数组非常简单:

    int[] a = new int[10];
    a[0] = 10;
    System.out.println(Arrays.toString(a));
    // [10, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    

    即便使用封装类也是比较容易的:

    Integer[] arr = new Integer[10];
    arr[0] = 10;
    System.out.println(Arrays.toString(arr));
    // [10, null, null, null, null, null, null, null, null, null]
    

    kotlin 中就不能这样写了,会出现下面的错误。

    错误的写法

    像下面就可以了:

    val arr: IntArray = IntArray(10)
    arr[0] = 10
    arr.forEach { print("$it ") }
    // 10 0 0 0 0 0 0 0 0 0 
    

    比如我在做 leetCode 上面题的时候,很多时候都是要使用集合,而且是空集合,也就是事先里面并没有值的情况,这个时候我发现并不好弄。

    val arr = emptyList<Int>().toMutableList()
    arr.add(10)
    arr.forEach { print("$it ") }
    

    发现很鸡肋,所以我猜肯定是我使用的不对。如果去掉后面的 toMutableList 就会出现错误,因为里面并没有提供 add 方法。

    结果我在官网上看到了这个:


    集合的关系图

    而跟操作相关的都在最下面的那一层,所以如果我要使用只能使用它:

    直接使用会出现报错
    需要指定参数 initsize,如果我不想指定怎么办,只能像下面这样:
    val arr = mutableListOf<Int>()
    arr.add(10)
    arr.forEach { print("$it ") }
    

    这就是我想要的了,当时就是为了这个很难受,虽然我知道官网上有,但由于但是在思考怎么写算法,结果因为这个而弄得很难受,所以就想着今天补一下。关于其他的操作改天等用到了再补上,这样影响深刻。

    相关文章

      网友评论

          本文标题:[学习]拥抱kotlin(七)

          本文链接:https://www.haomeiwen.com/subject/bhmwxltx.html