黑马程序员技术交流社区
标题:
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:18
第一题:1以上代码中,创建容器为什么是:Collection<String> collection = new ArrayList<String>(Arrays.asList(
"A", "B", "C", "D", "E")); // 创建容器
Collection类时ArrayList的父类,这里就体现了多态。父类的引用指向子类的对象。所以可以这么写,<String> 表示泛型,说明集合里面只能存String类型的。
ArrayList中的构造方法中有一个public
ArrayList
(
Collection
<? extends
E
> c),就是说可以传一个集合进去c进去,这里的类型E要跟你前面定义的<String> 一样。
Arrays.asList( "A", "B", "C", "D", "E") 这句话的意思是Arrays类(它是数组的工具类,)中有个一个静态的方法public static <T>
List
<T>
asList
(T... a)。直接加元素进去,并返回List类的子类对象。
示例:List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");支持列表的数组。
而且List类也是Collection的子类。所以可以直接传给ArrayList的构造器。
第二题: Collections.addAll(collection, "M", "N", "O", "P", "Q");//为何这里用的是Collections大写?
用到的是集合工具类Collections里面的静态方法addAll(),public static <T> boolean
addAll
(
Collection
<? super T> c, T... elements)
这个方法涉及到可变参数,你只要知道前面那个参数是表示你要往哪个集合里加元素。后面的参数表示你要加的元素。
知道了这个,collection.addAll(Arrays.asList(strArray));这句话的意思你应该能明白。这是collection类中的方法。
作者:
王志明
时间:
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