黑马程序员技术交流社区

标题: 集合的输出区别 哥们帮忙解释一下 谢谢 [打印本页]

作者: 442851994    时间: 2012-11-21 10:23
标题: 集合的输出区别 哥们帮忙解释一下 谢谢
本帖最后由 442851994 于 2012-11-22 17:01 编辑

集合直接用syso输出跟用迭代器输出有什么区别,两者都可以把集合中的内容输出,区别在哪里?
作者: jerry2627    时间: 2012-11-21 12:38
一个能取出来单个的,但是另一个不能啊
作者: 森仔    时间: 2012-11-21 12:43
集合直接输出相当于调用.toString方法 ,是把集合里面的元素拼装成字符串输出
作者: 森仔    时间: 2012-11-21 12:44
集合直接输出相当于调用.toString方法 ,是把集合里面的元素拼装成字符串输出
作者: 王斌    时间: 2012-11-21 16:39
集合collection  是接口,下面有很多子接口
list  :元素是有重复的,有序的,有索引
set   :元素是无序的,元素不可以重复
ArrayList  :  使用数组结构,查询速度快,增删慢,线程不同步
LinkedList  :  底层使用链表,查询慢,
system  是一个类,调用输出流进行输出
作者: yting_xmei1129    时间: 2013-9-21 00:14
如果只是为了看集合里面的内容的话,感觉区别不大,但也只限定一些基本的数据类型,比如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");  这行代码可以添加其它的内容进去哦亲!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2