数组转list

数组转List,小细节,来个demo:

 public class CollectionsDemo {
 public static void main(String args[]) {
   // create an array of string objs
   String init[] = { "One", "Two", "Three", "One", "Two", "Three" };
  
  // create one list   
   List initList = new ArrayList<>();     //方法1
   for(int i= 0; i<=init.size(); i++){
   initList.add(init[i]);
   }
  //Arrays.asList数组转List (不用add添加了)
  List list = new ArrayList(Arrays.asList(init));    //方法2

  //create singleton list(如果只有一个元素)
   List list = Collections.singletonList("TP");   //方法3(特殊)
	}
}

有什么好处呢??
1.如果只有一个元素,使用singletonList()
答:这个方法主要用于只有一个元素的优化,减少内存分配,无需分配额外的内存,可以从SingletonList内部类看得出来,由于只有一个element,因此可以做到内存分配最小化,而ArrayList的默认长度=10个。

2.Arrays.asList()适用所有类型的的数组转换吗?有什么限制吗?
答:(1)除了该方法不适用于基本数据(byte,short,int,long,float,double,boolean),其他都可以。为什么?
因为Arrays.aList()方法接受的是一个泛型参数,而基本类型是不能作为泛型参数,但是可以使用其包装类。如果真的使用基本类型,编译器也会通过,这时,这个数组将作为参数进行传递,那么List的长度将只能是1。
(2) 该方法不支持add和remove。为什么呢?在孤尽的《码出高效》java开发手册中第六种数据结构中有详细分析:依稀记得是Arrays类里面有一个静态的内部类ArrayList<>,而这个内部类里面是没有add,和remove方法的,这样说大家可能有点迷糊。我先说下Arrays.asList()中只有一行代码,那就是{return new ArrayList<>();},调用的是内部自己的ArrayList类。而不是我们平时新建一个List的ArrayList;

备注:第一种方法适用所有类型,所有情况,但是咱码代码的不也追求代码效率和美观呀

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值