java 集合转数组

写了一个测试例子 如下 


@Test
public void enFor(){
String[] abc={"a","b","c","d","...","z"};
for(String str:abc){
System.out.println(str);
}
Collection<String> money=new ArrayList<String>();
money.add("rmb");
money.add("doller");
money.add("ker");
money.add("jpy");
money.add("thb");
System.out.println("money.size()---- "+money.size());
for(String str:money){
System.out.println(str);
/*if(str.equals("thb")){
   money.remove("thb");
}*/
}
System.out.println(money);
System.out.println("money.size()-----"+money.size());
System.out.println(money.hashCode());
 money.toArray(abc);
for(String str:abc){
System.out.println("集合转换成数组之后的数组----"+str);
}
}


---------------------输出如下:


a
b
c
d
...
z
money.size()---- 5
rmb
doller
ker
jpy
thb
[rmb, doller, ker, jpy, thb]
money.size()-----5
1517604257
集合转换成数组之后的数组----rmb
集合转换成数组之后的数组----doller
集合转换成数组之后的数组----ker
集合转换成数组之后的数组----jpy
集合转换成数组之后的数组----thb
集合转换成数组之后的数组----null


----------------------------由输出内容可见:数组长度能够接住集合长度的情况下,  原数组的所有元素 被删除了。



在测试一中情况看看,例子如下:


@Test
public void enFor(){
String[] abc={"a","b","c","d"};
 
Collection<String> money=new ArrayList<String>();
money.add("rmb");
money.add("doller");
money.add("ker");
money.add("jpy");
money.add("thb");
System.out.println("money.size()---- "+money.size());
for(String str:money){
System.out.println(str);
/*if(str.equals("thb")){
   money.remove("thb");
}*/
}
System.out.println(money);
System.out.println("money.size()-----"+money.size());
System.out.println(money.hashCode());
 money.toArray(abc);
for(String str:abc){
System.out.println("集合转换成数组之后的数组----"+str);
}
}


------------------输出内容如下:

money.size()---- 5
rmb
doller
ker
jpy
thb
[rmb, doller, ker, jpy, thb]
money.size()-----5
1517604257
集合转换成数组之后的数组----a
集合转换成数组之后的数组----b
集合转换成数组之后的数组----c
集合转换成数组之后的数组----d


--------------------------由输出内容可见,数组长度接不住集合长度的时候, 原数组内容还在没有变化。



另一实现集合到数组的转换方式


@Test
public void enFor(){
String[] abc={"a","b","c","d"};
 
Collection<String> money=new ArrayList<String>();
money.add("rmb");
money.add("doller");
money.add("ker");
money.add("jpy");
money.add("thb");
System.out.println("money.size()---- "+money.size());
for(String str:money){
System.out.println(str);
/*if(str.equals("thb")){
   money.remove("thb");
}*/
}
System.out.println(money);
System.out.println("money.size()-----"+money.size());
System.out.println(money.hashCode());
 money.toArray(abc);
for(String str:abc){
System.out.println("集合转换成数组之后的数组----"+str);
}
 String [] newMoney=money.toArray(new String[]{});
 for(String str:newMoney){
System.out.println("集合转换成数组之后的数组,新数组内容:----"+str);
}
 

}


--------------输出内容如下: 

money.size()---- 5
rmb
doller
ker
jpy
thb
[rmb, doller, ker, jpy, thb]
money.size()-----5
1517604257
集合转换成数组之后的数组----a
集合转换成数组之后的数组----b
集合转换成数组之后的数组----c
集合转换成数组之后的数组----d
集合转换成数组之后的数组,新数组内容:----rmb
集合转换成数组之后的数组,新数组内容:----doller
集合转换成数组之后的数组,新数组内容:----ker
集合转换成数组之后的数组,新数组内容:----jpy
集合转换成数组之后的数组,新数组内容:----thb


-----------------由输出内容可见: 这种方式新建数组对象 接住toArray方法返回的数组。




在这个基础上优化一下 ,新建一个和集合长度一样的数组:

@Test
public void enFor(){
String[] abc={"a","b","c","d"};
 
Collection<String> money=new ArrayList<String>();
money.add("rmb");
money.add("doller");
money.add("ker");
money.add("jpy");
money.add("thb");
System.out.println("money.size()---- "+money.size());
for(String str:money){
System.out.println(str);
/*if(str.equals("thb")){
   money.remove("thb");
}*/
}
System.out.println(money);
System.out.println("money.size()-----"+money.size());
System.out.println(money.hashCode());
 money.toArray(abc);
for(String str:abc){
System.out.println("集合转换成数组之后的数组----"+str);
}
 String [] newMoney=new String[money.size()];
 money.toArray(newMoney);
 for(String str:newMoney){
System.out.println("集合转换成数组之后的数组,新数组内容:----"+str);
}
 
}

-----------------------输出如下:

money.size()---- 5
rmb
doller
ker
jpy
thb
[rmb, doller, ker, jpy, thb]
money.size()-----5
1517604257
集合转换成数组之后的数组----a
集合转换成数组之后的数组----b
集合转换成数组之后的数组----c
集合转换成数组之后的数组----d
集合转换成数组之后的数组,新数组内容:----rmb
集合转换成数组之后的数组,新数组内容:----doller
集合转换成数组之后的数组,新数组内容:----ker
集合转换成数组之后的数组,新数组内容:----jpy
集合转换成数组之后的数组,新数组内容:----thb

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值