A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闫玉泉 黑马帝   /  2012-2-28 01:13  /  1748 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看API上的ArrayList的文档有两个函数用于往数组里传递数据 如何使用?
toArray();
toArray(T[] a);
我往数组里传递数据的时候总是出错。

2 个回复

倒序浏览
 ArrayList<String []> arr = new ArrayList<String []>();
  arr.add(new String[]{"a","b"});
  arr.add(new String[]{"c","d"});
  String [][] str_a = (String[][]) arr.toArray();//这几行代码会有ClassCaseException异常
  执行上面这几行代码 会有ClassCaseException异常 ,再看看那下边这行代码
ArrayList<String []> arr = new ArrayList<String []>();
  arr.add(new String[]{"a","b"});
  arr.add(new String[]{"c","d"});
  String [][] str_a = (String[][]) arr.toArray(new String[0][0]);
这几行代码就可以了。
      可以看出,不带参数的toArray()方法,是构造的一个Object数组,然后进行数据copy,此时进行转型就会产生ClassCastException
  而带参数的toArray(T[] a) 方法,则是根据参数数组的类型,构造了一个对应类型的,长度跟ArrayList的size一致的空数组,虽然方法本身还是以 Object 数组的形式返回结果,不过由于构造数组使用的ComponentType跟需要转型的ComponentType一致,就不会产生转型异常
1. String[][] str_a = (String [][]) arr.toArray(new String[0][0]);
  2. String[][] a = new String[<size>][size];
  String [][] str_a = (String [][]) arr.toArray(a);
一般都用这两种方法。

评分

参与人数 2技术分 +3 黑马币 +3 收起 理由
杨盼 + 3 很给力!
职业规划-刘倩老师 + 3

查看全部评分

回复 使用道具 举报
楼上说的很到位,总结。收下了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马