写了一个测试例子 如下
@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