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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 442851994 中级黑马   /  2012-11-21 10:23  /  2077 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 442851994 于 2012-11-22 17:01 编辑

集合直接用syso输出跟用迭代器输出有什么区别,两者都可以把集合中的内容输出,区别在哪里?

5 个回复

倒序浏览
一个能取出来单个的,但是另一个不能啊
回复 使用道具 举报
集合直接输出相当于调用.toString方法 ,是把集合里面的元素拼装成字符串输出
回复 使用道具 举报
集合直接输出相当于调用.toString方法 ,是把集合里面的元素拼装成字符串输出
回复 使用道具 举报
集合collection  是接口,下面有很多子接口
list  :元素是有重复的,有序的,有索引
set   :元素是无序的,元素不可以重复
ArrayList  :  使用数组结构,查询速度快,增删慢,线程不同步
LinkedList  :  底层使用链表,查询慢,
system  是一个类,调用输出流进行输出

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
如果只是为了看集合里面的内容的话,感觉区别不大,但也只限定一些基本的数据类型,比如8中基本类型跟String类型的,其它类型就不知道效果了。如果添加了泛型,并且是基本类型跟String类型的话,就能看,貌似不添加泛型,只要是8中基本数据类型跟String类型就能显示出来。但如果是其他的对象呢!特别是复杂点的对象,那就看不了里面的内容,只能看对象的引用了,而必须要用迭代器什么的把集合里面的数据取出来,然后再操作了把!比如下面的代码:

public static void main(String[] args) throws Exception {
                ArrayList list1 = new ArrayList();
                list1.add(1);
                list1.add(2);
                list1.add(3);
                list1.add(new ArrayList<String>().add("hello"));
               
                System.out.println(list1);
               
                ArrayList<Integer> list2 = new ArrayList<Integer>();
                list2.add(1);
                list2.add(2);
                list2.add(3);
                //list2.add(new ArrayList<String>().add("hello"));不能添加,因为加了泛型
                //如果你手痒非要添加的话,可以使用反射,想看效果尅一把下面那行代码注释给去掉
                //list2.getClass().getMethod("add", Object.class).invoke(list2, "string");   //添加了一个String类型的对象
               
                System.out.println(list2);
        }
输出结果:

[1, 2, 3, true]
[1, 2, 3]

这里就可以看出差别了
list1.add(new ArrayList<String>().add("hello")); 输出是true,不是意料之中的结果

虽然list2添加泛型了,但是//list2.getClass().getMethod("add", Object.class).invoke(list2, "string");  这行代码可以添加其它的内容进去哦亲!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马