一、为什么出现集合类?
面向对象语言对事物的体现都是对象的形式,所以为了方便对多个对象的操作
就对对象进行存储,集合就是存储对象最常用的一种方式。
二、数组和集合类同是容器,有何不同?
数组虽然也可以存储对象,但是长度是固定的。
数组中可以存储基本数据类型
三、集合类的特点
集合只能存储对象,集合长度是可变的,集合可以存储不同类型的对象
四、Collection接口,ArrayList实现了这个接口,下面对Collection中的共性方法进行学习
add方法的参数类型是Object,多态的体现,以便于接收任意类型对象。
集合中存储的都是对象的引用(地址)
//创建一个集合容器,使用Collection接口的子类:ArrayList
ArrayList al=new ArrayList();
//添加元素
al.add("java01");//add(Object obj)是obj的原因是:集合元素类型不确定,多态的体现
al.add("java02");
al.add("java04");
al.add("java05");
//删除元素
//al.remove("java02");//参数为元素
al.remove(1);//参数为下标
//al.clear();清空
//获取集合长度
sop(al.size());
//是否存在某个元素indexOf(Object obj)获得特定元素的下标
sop("获取java04的集合下标:"+al.indexOf("java04"));
//sop("集合中包含Java03吗?"+((al.indexOf("java03")!=-1)?true:false));
//判断是否含某个元素
sop("该集合中是否含java02:"+al.contains("java02"));
//判断集合是否为空
sop("集合为为空?"+al.isEmpty());
//打印
sop(al);
}
public static void retainAll_method() {
ArrayList al=new ArrayList();
al.add("java01");
al.add("java02");
al.add("java08");
al.add("java05");
ArrayList a2=new ArrayList();
a2.add("java07");
a2.add("java08");
a2.add("java05");
a2.add("java06");
//al.retainAll(a2);//求交集,a1中只保留a2有的元素
al.removeAll(a2);//移除此集合(a1)中那些包含在指定集合(a2)中的元素
sop("al="+al);
sop("a2="+a2);
//还有boolean containsAll(Collection c):如果此collection包含指定集合中的元素,返回true
//这些方法的使用方法见Java.util.Collection接口方法
什么是迭代器?
就是集合的取出元素的方式。
就把取出定义在集合的内部,这样取出方式就可以直接访问集合内容的元素,即把取出方式定义成内部类。而每个容器的数据结构不同,那么取出的动作细节也不同,但是都是共性抽取。
共性抽取,说明这些内部类都有一些个规则,这个规则就是Iterator。
如何获取集合中的对象呢?通过一个对外提供的方法iterator();
public static void method_get() {
ArrayList al=new ArrayList();
al.add("java01");
al.add("java02");
al.add("java04");
al.add("java05");
Iterator it=al.iterator();//获取迭代器,用于取出集合中的元素
while(it.hasNext()) {
sop(it.next());
}
//也可以如下写法
for(Iterator it1=al.iterator();it1.hasNext();) {
sop(it1.next());
}
}