---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
集合:容器
为什么出现集合类?
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储。集合就是存储对象最常用的一种方式。
数组和集合类同是容器,有何不同?
数组虽然也可以存储对象,但长度是固定的,集合长度是可变的。数组可以存储基本数据类型,集合只能存储对象。
集合类的特点?
集合只用于存储对象,集合长度可变,集合可以存储不同类型的对象
数据在集合中怎样存储,叫集合的数据结构,不同的集合有不同的数据结构,有不同的特点,这是根据需求产生的。不同的的集合向上抽取,就形成了集合体系,即集合框架
Collection<E>接口,根接口,集合的共性的方法
常见功能:
1.添加
boolean add(E e)
boolean addAll(Collection<? Extends E>c)
2.删除
boolean remove(Object o)
boolean removeAll(Collection<?> c)
void clear();//清空集合,集合还在
3.判断
boolean contains(Object o)
boolean containsAll(Collection<?> c)
boolean isEmpty()
4.获取
int size();//获取长度
Iterator<E> iterator();//迭代器,取出集合中元素的方式,返回的是一个迭代器对象
5.其他
boolean retainAll(Collection<?> c);//取交集
Object[] toArray();//将集合转成数组
*集合直接被打印System.out.println(集合);会打印集合中的所有元素
[元素1,,元素2,元素3],这整体是一个字符串,这和获取集合元素不一样
Iterator,这是一个接口,它的实现是在某一种集合的内部的,以内部类的形式存在,因为每一种集合的数据结构不同,所以取出元素的方式也不同,每种集合都对应的实现了Iterator接口。我们没有必要知道内部是怎么实现取出元素的,使用集合对象的iterator()方法得到它的迭代器,就可以使用迭代器的next()方法和hasNext()方法得到集合中的元素。
迭代器对象必须依赖于具体的容器。
import java.util.*;
class CollectionDemo
{
public static void main (String [] args)
{
//Collection是一个接口,要用它的实现类构造对象
Collection coll = new ArrayList();
Collection c1 = new ArrayList();
Collection c2 = new ArrayList();
show(coll);
show(c1,c2);
}
//show的形参Collection在jdk1.5以后使用了泛型,这里只是演示,故不声明泛型
public static void show(Collection coll)
{
coll.add("adsf");
coll.add("ZX");
coll.add("qew");
coll.add("qewyrrj");
System.out.println("直接打印集合coll:"+coll);
coll.remove("ZX");
System.out.println("删除ZX元素后的coll:"+coll);
System.out.println("判断集合中是否含有元素qew:"+coll.contains("qew"));
System.out.println("判断集合中是否为空:"+coll.isEmpty());
System.out.println("获取集合的长度:"+coll.size());
System.out.println("使用迭代器获取集合中的元素:");
Iterator it = coll.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
//一般开发中使用下面方法
//for (Iterator it = coll.iterator(); it.hasNext(); )
//{
// System.out.println(it.next());
//}
}
public static void show(Collection c1,Collection c2)
{
c1.add("qwe");
c1.add("as");
c1.add("Z");
c1.add("453");
c2.add("xcvn");
c2.add("453");
System.out.println("直接打印集合c1:"+c1);
System.out.println("直接打印集合c2:"+c2);
c1.addAll(c2);
System.out.println("c1.addAll(c2)之后,c1:"+c1);
c1.removeAll(c2);
System.out.println("c1.removeAll(c2)之后,c1:"+c1);
System.out.println("c1.containsAll(c2):"+c1.containsAll(c2));
c1.retainAll(c2);
System.out.println("c1.retainAll(c2)取交集后c1:"+c1);
}
}
编译出现了一个友情提示,原因是没有使用泛型,有安全隐患。
Collection有许多子接口,其中有两个我们常用到
List(列表),Set(集)
List:有序,不是指从小到大或者从大到小,是指怎么存进去的,取出就是什么顺序。而且元素都有索引(角标),允许有重复元素。
Set:没有重复元素,无序,存入和取出顺序不一定一样。
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------