黑马程序员技术交流社区

标题: 有关数组转换成集合后的疑问 [打印本页]

作者: cyh8807    时间: 2013-3-12 09:01
标题: 有关数组转换成集合后的疑问
本帖最后由 赵彦辉 于 2013-3-12 22:04 编辑
  1. public static void main(String[] args)throws Exception
  2.         {
  3.                 int[] arr = {1,2,3,45};
  4.                 List<int[]> list = Arrays.asList(arr);
  5.                 System.out.println(list);
  6.                 Iterator ite = list.iterator();
  7.                 while(ite.hasNext())
  8.                 {
  9.                         System.out.println(ite.next());
  10.                 }
  11.         }
复制代码
我们都知道Arrays是对数组进行操作的工具类,其asList()方法是将数组转换成集合

1、如果数组中的元素都是对象,变成集合时,数组中的元素就直接转换成集合中的元素。
2、如果数组中的元素都是基本数据类型,变成集合时,会将该数组作为集合中的元素存在。

上面的代码是将一个int类型的数组转换成集合,我的问题是:能否从集合中,再取出该数组的所有元素
我自己测试的是只能取出该数组的内存地址
希望大家可以帮我完成下面的代码





作者: 沈文杰    时间: 2013-3-12 09:27
  1. public class AsListTest{
  2. public static void main(String[] args)throws Exception
  3.         {
  4.         int[] arr = {1,2,3,4,5};
  5.         List<int[]> list = Arrays.asList(arr);
  6.        //在定义迭代器时候加上泛型
  7.         Iterator<int[]> ite = list.iterator();
  8.         while(ite.hasNext())
  9.         {
  10.                 //定义一个对象由于接收取出的元素
  11.                 int[] a = ite.next();
  12.                 //使用for循环迭代取出
  13.              for(int i : a){
  14.                      System.out.println(i);
  15.              }  
  16.         }
  17.         }
  18. }
复制代码

作者: scott0610    时间: 2013-3-12 11:59
数组的工具类 Arrays提供的asList()方法是把一个数组或指定个数的对象转换成一个List集合,
但这个List集合既不是ArrayList实现类的实例,也不是Vector实现类的实例,而是Arrays的内部类ArrayList实例。
Arrays.ArrayList是一个固定长度的List集合,程序只能遍历访问该集合里的元素,不可增加,删除该集合中的元素。
还有一点需要注意,集合和数组不一样,数组元素既可以是基本数据类型,也可以是对象(对象的引用变量),
而集合只能是对象(对象的引用变量)。
如果数组中的元素都是基本数据类型,变成集合时,会将该数组作为集合中的元素存在。这是因为Java虚拟机自动实现了包装的作用。

希望对你有所帮助。
作者: 李阳    时间: 2013-3-12 14:51
把int型数组元素装箱成Integer对象。
数组定义成Integer[] a = {1,2,3,4,5};
这样集合里存的就是对象,不是int数据了。就可以直接迭代。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2