数组转List-典型代码缺陷分析(三)
以上为开发过程中,部分程序猿数组转list的“笨”方法,为什么说笨呢,因为这样做代码很繁琐不简练容易出错可读性叫差,而且还比较耗时,因为我要一个一个遍历数组,然后把这个元素添加到list中(不过以上代码还有几点,最好给ArrayList<String>指定一个初始容量,注意和LinkedList的区别,以及split方法使用的效率和可能内存泄漏问题,此文不再详述,此处重点解读数组转list)。
其实JDK特意为这种情况准备了一个方法,那就是java.util包中的Arrays.asList方法,如下:
一行代码即可解决数组转list的问题,可读性高而且不易出错,而且asList方法底层是将数组的引种直接付给的一个私有内部类Arrays.ArrayList的里的数组了,效率相对一个一个对应的添加引用变量更高一些。
不过asList得的list的大小固定,可以说是“参数数组的视图”,其实返回的ArrayList类型为Arrays的私有内部类,它并没有对应的add或者remove方法,所以不能进行元素的增加或者删除否则会报异常,一般这种list用于Dao层方法的传参,如果想得到一个可以增加或者删除的list,可以new ArrayList(Arrays.asList(数组))即可,其详细使用及注意事项请参考我的博文:Array.asList:数组转list时你一定要知道的“陷阱”!
补充:
如果是如Arrays.asList(ids.split(","))将一个字符串以指定的分隔符(或者分割字符串或者正则表达式或者其他)拆分数组再转List的话,还有一个也比较直接简便的方法,就是利用google的工具类库Guava里的splitter.on(",").splitToList(字符串)来实现,不过这个方法得到的也是大小不可变的list。
转载请注明—作者:Java我人生(陈磊兴) 原文出处:http://blog.csdn.net/chenleixing/article/details/44499263
欢迎关注我的博客,敬请关注代码典型缺陷分析系列下一篇!
如果过程中有讲解的不合理或者不对或者你有更好的想法,还望大牛们留下你们的宝贵文字,以便你、我、大家更好的学习与进步!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。