黑马程序员技术交流社区

标题: Collection容器问题 [打印本页]

作者: 魏-玉-彪    时间: 2012-7-24 18:02
标题: Collection容器问题
package org.container;
import java.util.*;
public class UseCollection {
                public static void main(String[] args) {
                        Collection<String> collection = new ArrayList<String>(Arrays.asList(
                                        "A", "B", "C", "D", "E"));                                        // 创建容器       
                        String[]strArray = { "F", "G", "H", "I", "J" };               
                        collection.addAll(Arrays.asList(strArray));
                        Collections.addAll(collection, "M", "N", "O", "P", "Q");
                        System.out.println(collection);
                        //迭代容器中的每一个元素
                        for(Iterator it = collection.iterator();it.hasNext();){       
                                System.out.print(it.next() + " ");
                        }
                        System.out.println();
                        for (String i : collection) {
                                System.out.print(i + " ");
                        }
                        System.out.println();
                        collection.remove("A");                                                        // 移除一个元素
                        for (String i : collection) {
                                System.out.print(i + " ");
                        }
                        Collection<String> part = new ArrayList<String>(Arrays.asList(
                                        "B", "C", "D", "E"));
                        System.out.println();
                        collection.retainAll(part);                                                        // 保存相同的元素
                        for (String str : collection) {
                                System.out.print(str + " ");
                        }
                        System.out.println();
                        Object[]o = collection.toArray();                                                // 返回一个数组
                        System.out.println(Arrays.deepToString(o));
                        collection.removeAll(collection);                                                // 移除所有的元素
                        System.out.println(collection.size());
                }
}

1以上代码中,创建容器为什么是:Collection<String> collection = new ArrayList<String>(Arrays.asList(
                                        "A", "B", "C", "D", "E"));                                        // 创建容器       
2String[]strArray = { "F", "G", "H", "I", "J" };               
                        collection.addAll(Arrays.asList(strArray));
                        Collections.addAll(collection, "M", "N", "O", "P", "Q");//为何这里用的是Collections大写?
3
                       


作者: 王璐    时间: 2012-7-24 18:20
1,构造一个包含指定 元素的集合,有初始化值,Arrays.asList( )返回一个list集合,所构造的集合一创建里面就有元素。

2,Collections  是一个工具类,里面的方法都是静态的,所以都是类名.方法名,而collection是一个集合的引用,楼主要看清楚喽!
作者: 魏-玉-彪    时间: 2012-7-24 18:50
for (String str : collection) {
                                System.out.print(str + " ");


这个for 循环怎么解释? 请详细分步 注释
作者: 王璐    时间: 2012-7-24 18:53
魏-玉-彪 发表于 2012-7-24 18:50
for (String str : collection) {
                                System.out.print(str + " ");

用增强for循环打印collection引用的集合中的元素,这需要解释吗
作者: 李菁    时间: 2012-7-24 19:07
1、规定Collection集合中只能存入String类型的元素,在创建Collection集合时,把一个ArrayList集合赋值给Collection集合
2、小写的collection是集合的名字,大写的Collection是一个Java类,直接用类名.方法名调用里面的静态方法
作者: 王志明    时间: 2012-7-24 19:21
1.Collection是单列集合的接口,不能直接创建对象,List接口继承了Collection接口,而ArrayList实现了List接口,所以ArrayList也是Collection的后代,这里就可以使用多态了,<String>是泛型,是指这个集合中只能存放String类型的对象,泛型在编译时检查。
2. Collections是操作集合的一个工具类,它里面提供了一些常用的static方法,addAll()方法是将一系列数据添加到指定集合中。


作者: 张世威    时间: 2012-7-24 19:30

1以上代码中,创建容器为什么是:Collection<String> collection = new ArrayList<String>(Arrays.asList(
                                        "A", "B", "C", "D", "E"));                                        // 创建容器        
2String[]strArray = { "F", "G", "H", "I", "J" };               
                        collection.addAll(Arrays.asList(strArray));
                        Collections.addAll(collection, "M", "N", "O", "P", "Q");//为何这里用的是Collections大写?
3



1:Collection<String> collection = new ArrayList<String>(Arrays.asList(
                                        "A", "B", "C", "D", "E"));   
   这个叫面向接口编程,举个例子:Collection 指车子吧,那么那么ArrayList就指具体的一辆车子了,比如说你的
坐骑。就好像你在说,我的坐骑也是车子。              子类是父类,但是你要是说车子是你的坐骑,那就有点问题了,
就好像说车子是时自行车,那么其他的车子干嘛去了?只能给你这样打比喻了,以后慢慢在理解吧

2:大哥注意看,Collections 和collection是不同一个东西,前者是一个专门用来操作集合的工具类,而
        后者是你自己创建的一个对象。看起来长得像而已,Collections是为Collection的对象服务的专业工具。哥们
看仔细了。




作者: 魏-玉-彪    时间: 2012-7-31 16:43
谢谢各位大侠,本问题已解决




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