黑马程序员技术交流社区

标题: ArrayList转字符串 [打印本页]

作者: 马上都有    时间: 2014-5-20 18:12
标题: ArrayList转字符串
public void demo()
{
        ArrayList<String> al = new ArrayList<String>();
        al.add("abc1");
        al.add("abc2");
        al.add("abc3");
               
        String[] arr = al.toArray(new String[al.size()]),
}

把集合中的元素转化成字符串数组,不是al.toArray()就可以吗?
为什么还要new String[al.size()]呢?帮忙解释解释。

作者: 观决    时间: 2014-5-20 18:36
本帖最后由 观决 于 2014-5-20 18:39 编辑


api里面有啊  不加及时Object 下面那个加了泛型  那个里面size  api也说得很清楚 小了会自动补全 多了就多了

作者: Blackay    时间: 2014-5-20 20:46
因为你用了泛型啊 为了保证类型不能变 要new一个String类型的数组
作者: 周俊波    时间: 2014-5-20 21:30
你的数组定义的是Sting类型的,而这个toArray方法是用到了泛型的,使用需要加上String类型,al.size是指新的数组大小
作者: 艮昕辶    时间: 2014-5-21 17:05
String[] arr = al.toArray(new String[al.size()]),
你的这句话也可以写成String[] arr = al.toArray(new String[]{});
作者: Hosing    时间: 2014-7-3 16:09
什么是泛型呀?路过......
作者: 慕杰    时间: 2014-7-3 16:48
如果不加new String[al.size()],就必须在al.toArray()前面强转成String[]类型的数组
作者: wisely    时间: 2014-7-3 17:53
由于泛型。

不过在这个事例中,用al.toArray(new String[])与al.toArray()没有什么区别,即便是Collections.toString(al)打印也看不出区别。这是因为String类复写了toString()方法,如果换成没有复写的toString()方法的类,那可能就要悲剧了。

有没有画蛇添足?




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