zoukankan      html  css  js  c++  java
  • Java学习笔记-数组与容器间的转制-asList

    先列举一下我们需要的api:

    java.util.Collection接口中:

    toArray

    Object[] toArray()
    返回包含此 collection 中所有元素的数组。如果 collection 对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。

    返回的数组将是“安全的”,因为此 collection 并不维护对返回数组的任何引用。(换句话说,即使 collection 受到数组的支持,此方法也必须分配一个新的数组)。因此,调用者可以随意修改返回的数组。

    此方法充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。

    返回:
    包含此 collection 中所有元素的数组

    java.util.Arrays类中:

    asList

    public static <T> List<T> asList(T... a)
    返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess

    此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:

         List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
      
    参数:
    a - 支持列表的数组。
    返回:
    指定数组的列表视图。

    这里面需要注意的问题还是很多的

    一、int[] 无法转换成列表 因为aslist方法无法将基本类型转制保证成类,所以你要讲数组声明为Integer

    看代码:

            Integer[] num = {2,3,4};
            int[] num1 = {2,3,4};
            List<Integer> l = Arrays.asList(num);
            List<int[]> l1 = Arrays.asList(num1);

    Integer[] 可以正确传入,但是int[] 就不行,因为其内部不会自动包装,这个非常值得注意

    二、aslist返回的是视图,而toarray返回的是一个副本

    所谓视图是修改会被映射到原结构!

    三、用aslist映射的列表只能增加和删除。参照:http://www.cnblogs.com/zolra/archive/2011/03/02/1969235.html

  • 相关阅读:
    传参存在潜在危险值
    JWT Json Web Token
    异步编程初探:async和await
    异步 async/Await C#
    React+ES6+Dva(roadHog,Webpabk,Babel)+AntDesign 技术栈相关学习文档
    iOS App 内跳转到手机系统设置页面
    h5(WKWebView)和iOS之间的交互问题
    iOS 10需要设置的隐私权限
    iOS APP开发设置启动图片 Launch Image
    iOS开发中常用的手势---边缘手势
  • 原文地址:https://www.cnblogs.com/lance-/p/3754585.html
Copyright © 2011-2022 走看看