您的位置:首页 > 编程语言 > Java开发

Java学习笔记-数组与容器间的转制-asList

2014-05-27 10:54 302 查看

先列举一下我们需要的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映射的列表只能增加和删除。参照:/article/5487468.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐