A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 为梦而战 黑马帝   /  2011-12-22 15:46  /  3895 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 为梦而战 于 2011-12-22 20:03 编辑

String[] str转成集合后为什么能直接输出,int [] in转成集合后为什么就不能直接输出啊?

11 个回复

倒序浏览
使用什么方法转呢
回复 使用道具 举报
使用工具类Arrays中的asList()方法

回复 使用道具 举报
int[] i = {1,2,3,4,5};
                TreeSet<Integer> ts=new TreeSet<Integer>();
                for (int j : i) {
                        ts.add(j);
                }
                System.out.println(ts);
               
运行结果:[1, 2, 3, 4, 5]

可以直接输出
回复 使用道具 举报
t_mac 黑马帝 2011-12-22 16:05:03
报纸
为了能版本兼容 因为java1.5之前 asList(Object[] obj) 接收的是Object[] 而当你传一个
String[]  编译器一看String是Object 这是一个Object[] 用的是1.5之前的方法 即把String[]中元素放入List集合中
而当你传人int[] 时  编译器一看int不是Object 这不是一个Object[]  不能用1.4之前的 方法
1.5版本后 出现 asList(T... a) 它会把int[] 作为一个Object 而不会去取出其中每个元素 所以你看不到想要的输出效果
回复 使用道具 举报
String[] str转成集合,数组中元素直接转成集合中的元素,相当于打印一个ArrayList<String>的集合。
int [] in转成集合,只是in这个数组成为了集合中的元素,打印出来的就是in的地制值。
回复 使用道具 举报
t_mac 发表于 2011-12-22 16:05
为了能版本兼容 因为java1.5之前 asList(Object[] obj) 接收的是Object[] 而当你传一个
String[]  编译器一 ...

既然有这个数组引用转成集合的方法,应该是只要我指定的任何类型数组应该都能转成集合,然后用集合的思想去操作数组才好啊,那这里出现的不一致性用什么方法能解决呢?
回复 使用道具 举报
黄达标 发表于 2011-12-22 16:09
String[] str转成集合,数组中元素直接转成集合中的元素,相当于打印一个ArrayList的集合。
int [] in转成 ...

为什么int[] in数组转成集合的时候它的元素就不作为集合元素啊?是因为int[] in数组中的元素是基本类型而不是对象,而集合中存放的都是对象的原因吗?基本数据类型不是能自动装箱成对象吗?有点不明白,望指点!
回复 使用道具 举报
t_mac 黑马帝 2011-12-22 16:53:52
9#
为梦而战 发表于 2011-12-22 16:40
既然有这个数组引用转成集合的方法,应该是只要我指定的任何类型数组应该都能转成集合,然后用集合的思想 ...

像这样基本类型的数组不能直接转,只能间接转
回复 使用道具 举报
袁泽宇 发表于 2011-12-22 16:03
int[] i = {1,2,3,4,5};
                TreeSet ts=new TreeSet();
                for (int j : i) {

这个到是也行,但是专为int[] 这样的数组写就的自己写一个方法将其转成集合,那数组的类型很多对吧,要是将其它类似于Int[] 的数组要是也要转成集合来使用的话,又怎么办?
回复 使用道具 举报
t_mac 黑马帝 2011-12-22 16:55:42
11#
为梦而战 发表于 2011-12-22 16:48
这个到是也行,但是专为int[] 这样的数组写就的自己写一个方法将其转成集合,那数组的类型很多对吧,要是 ...

可以封装成一个方法,
用反射可以实现  Class 类有个isArray方法 很好用的
回复 使用道具 举报
t_mac 发表于 2011-12-22 16:55
可以封装成一个方法,
用反射可以实现  Class 类有个isArray方法 很好用的

是不,我还没有学到那了,谢谢你的指点,等我学了那部分后,用一用!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马