集合和数组比较像,也是一种,容器但是有很大区别
数组的长度在初始化时时定下来的,不可变了,那么以后如果项目需求改变,原本需要10个学生信息,现在要20个,那怎么办?
所以就引出了集合
集合的最根上的接口是collection,其子接口有list和set。
集合和数组差不多,但是你可以不需要定义它的长度,你想什么时候往里面加元素,删除元素都可以。
Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念:
1) Collection 。 一组对立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set 不能有重复元素。
2) Map 。 一组 成对的“键值对”对象。初看起来这似乎应该是一个Collection ,其元素是成对的对象,但是这样的设计实现起来太笨拙了,于是我们将Map明确的提取出来形成 一个独立的概念。另一方面,如果使用Collection 表示Map的部分内容,会便于查看此部分内容。因此Map一样容易扩展成多维Map ,无需增加新的概念,只要让Map中的键 值对的每个“值”也是一个Map即可。
Collection和Map的区别在于容器中每个位置保存的元素个数。Collection 每个位置只能保存一个元素(对象)。此类容器包括:List ,它以特定的顺序保存一组元素;Set 则 是元素不能重复。
Map保存的是“键值对”,就像一个小型数据库。我们可以通过“键”找到该键对应的“值”。
? Collection – 对象之间没有指定的顺序,允许重复元素。
? Set – 对象之间没有指定的顺序,不允许重复元素 ? List– 对象之间有指定的顺序,允许重复元素, 并引入位置下标。
? Map – 接口用于保存关键字(Key)和数值(Value)的集
合,集合中的每个对象加入时都提供数值和关键字。Map 接口既不继承 Set 也不继承 Collection。
List、Set、Map共同的实现基础是Object数组
import java.util.*;
public class CollectionToArray {
public static void main(String[] args) {
Collection collection1=new ArrayList(); //创建一个集合对象
collection1.add("000"); //添加对象到Collection集合中
collection1.add("111");
collection1.add("222");
System.out.println("集合collection1的大小:"+collection1.size());
System.out.println("集合collection1的内容:"+collection1);
collection1.remove("000");//从集合collection1中移除掉 "000" 这个对象
System.out.println("集合collection1移除 000 后的内容:"+collection1);
System.out.println("集合collection1中是否包含000 :"+collection1.contains("000"));
System.out.println("集合collection1中是否包含111 :"+collection1.contains("111"));
Collection collection2=new ArrayList();
collection2.addAll(collection1); //将collection1 集合中的元素全部都加到collection2中
System.out.println("集合collection2的内容:"+collection2);
collection2.clear();//清空集合 collection1 中的元素
System.out.println("集合collection2是否为空 :"+collection2.isEmpty()); //将集合collection1转化为数组 Object s[]= collection1.toArray();
for(int i=0;i<s.length;i++){ System.out.println(s[i]);
}
}
}
运行结果为:
集合collection1的大小:3
集合collection1的内容:[000, 111, 222]
集合collection1移除 000 后的内容:[111, 222]
集合collection1中是否包含000 :false
集合collection1中是否包含111 :true
集合collection2的内容:[111, 222] 集合collection2是否为空 :true
111
222
http://wenku.baidu.com/view/6d2850ba1a37f111f1855b42.html 这是一个百度文库的,感觉看了比较易懂,留做笔记。
原文:http://www.cnblogs.com/dssxk/p/3695092.html