StringBuffer,它可以根据元素的多少来改变长度。但是,StringBuffer里面存储的内容始终是一个一个的字符,Java替我们考虑到了这一点,可以根据元素的不用,元素的特点和存储的方式不同,提供了一个集合继承体系给我们使用
集合和数组的不同点:
1、数组的长度是不可变的,集合的长度是可变的
2、数组可以存放同一种基本数据类型或者引用数据类型的元素
而集合只能存放引用数据类型,并且集合中可以存放法不同数据类型的元素
(注意:这里我虽然说了集合可以存放不同的数据类型,实际确实也可以这么做,但是呢,
在实际开发中,一个集合存放一种引用数据类型的元素)
集合可以存放各种各样的数据,每种数据的长度,大小以及自身的特点都不一样。
所以,java提供的集合也不应该是单一的,我们要针对不同的需求,使用java提供的不同的集合。
这么多不同的集合,它们底层的数据结构也是不同的,占用的内存空间也是不一样的。不同不重要,我们只需要知道集合是可以用来
存放数据的,不光可以存放,而且可以使用这些数据,比如:查找数据,获取数据,判断数据,删除数据等等。
迭代器中的向下转型是要转成集合中元素的数据类型
Collection:
由于Collection是一个接口,所以无法被实例化,我们要找它一个子类来进行接口多态的方式实例化,这里我们就暂时用ArrayList
来举例。
1、添加功能
boolean add(Object e)确保此集合包含指定的元素(可选操作)
Collection c=new ArrayList();
c.add("hello");
c.add("world");
System.out.println(c);//这里调用的是AbstractCollection类中的toString方法
boolean addAll(Collection c) 将指定集合中的所有元素添加到此集合(可选操作)
//创建集合对象
Collection c=new ArrayList();
//向集合中添加元素
c.add("hello");
c.add("world");
c.add("hello");
c.add("hadoop");
c.add("hive");
c.add("spark");
//创建另一个集合
Collection c1=new ArrayList();
c1.add("hello");
c1.add("world");
c1.add("hadoop");
//boolean addAll(Collection c)将指定集合中的所有元素添加到此集合
System.out.println(c.addAll(c1));
2、删除功能
boolean remove(Object o) 从该集合中删除指定元素的单个实例(如果存在)(可选操作)。
//boolean remove(Object o)删除指定元素的单个实例,且是第一个出现的元素
c.add("hello");
c.add("world"//boolean remove(Object o)删除指定元素的单个实例,且是第一个出现的元素
c.add("hello");
c.add("world");
c.add("hello");
System.out.println(c);
c.remove("hello");
System.out.println(c);
boolean removeAll(Collection c) 删除指定集合中包含的所有此集合的元素(可选操作)
//boolean removeAll(Collection c)删除指定集合中包含的所有元素
System.out.println(c.removeAll(c1));
void clear() 从此集合中删除所有元素(可选操作)。
//void clean()从此集合中删除所有元素
c.clear();
System.out.println(c);
3、获取功能
Iterator iterator() 返回此集合中的元素的迭代器。
4、判断功能
boolean contains(Object o) 如果此集合包含指定的元素,则返回 true 。
// boolean contains(Object o)如果此集合包含指定的元素,则返回true
System.out.println(c.contains("world"));
boolean containsAll(Collection c) 如果此集合包含指定 集合中的所有元素,则返回true。
//boolean containsAll(Collection<?> c)如果此集合中包含指定集合中的所有元素,则返回true
System.out.println(c.contains(c1));
System.out.println(c);
boolean isEmpty() 如果此集合不包含元素,则返回 true 。
// boolean isEmpty()如果此集合不包含元素,则返回true
System.out.println(c.isEmpty());
5、获取长度方法:
int size() 返回此集合中的元素数
// int size() 集合中的元素数
System.out.println(c.size());
6、求交集功能
boolean retainAll(Collection c) 仅保留此集合中包含在指定集合中的元素(可选操作)。