黑马程序员技术交流社区
标题:
集合框架之Collection接口
[打印本页]
作者:
695010894
时间:
2016-4-4 14:43
标题:
集合框架之Collection接口
import java.until.*;
class CollectionDemo
{
public static void main(String[] args)
{
//创建一个集合容器,使用Collection接口的子类.ArrarList
ArryList al = new ArrayList();
//添加元素
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
//删除元素
al.remove();
al.clear(); 清空集合
//获取元素个数,集合长度
al.size();
//判断元素
al.contains();
//是否为空
al.isEmpty();
//取交集
al1.rentainAll(al2); //al1中只会保留相同元素.
al1.removeAll(al2); //al1中只会保留不同的元素
//取出元素
把这种取出方式定义在集合内部,这样的取出方式可以直接访问集合内元素,定义成内部类.
而每一个容器的数据结构不同,动作细节也不一样,但是都有共性内容:判断和取出;
则可以对外提供一个接口: iterator();
Iterator it = al.iterator();
while(it.hasNext()) //获取迭代器,取出集合中的元素--迭代是用于集合取出元素的方式
{
it.next();
}
for (Iterator it =al.iterator; it.hasNext(); )//it局部变量 程序结束就释放
{
it.next();
}
}
public static void sop(Object obj) // add方法的参数类型都是Object,便于接收任意类型对象,即多态.
{
System.out.println(obj);
}
}
collection
|--List:元素是有序的,元素可以重复
|--ArrayList:低层的数据结构使用的是数组结构.特点:查询速度快,但是增删缓慢.线程不同步
|--LinkedList:低层使用的是链表数据结构.特点:增删速度很快,查询稍慢.
|--Vector:低层是数组数据结构.线程同步,被ArrayList替代
|---Set: 元素是无序的,元素不可以重复.
List特有方法:凡是可以操作角标的方法都是该体系特有的方法.
List集合特有的迭代器. ListIterator 是Iterator的子接口,在迭代时,
不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常
所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能进行判断,取出,删除的操作,
如果想要其他操作,如添加修改,就需要使用其子接口:ListIterator
该接口只能通过List集合的ListIterator方法获取.--掌握
增:
add(index,element);
addAll(index,collection);
删:
remove(index);
改:
set(index,element);
查:
get(index);
subList(start,end);
listIterator();
在指定位置添加元素
a1.add(1,"java");
删除指定位置的元素
a1.remove(2);
修改元素
a1.set(3,"java2");
通过角标获取元素
a1.get(3);
枚举:是Vector特有的取出方式,和迭代器一样.
因为枚举的名称以及方法名称都过长,所以被迭代器取代了.
LinkedList 特有方法:
addFirst();
addLast();
getFirst();
getLast();
获取元素,但不删除元素.如果集合中没有元素,会出现NoSuchElementException
removeFirst();
removeLast();
获取元素,删除元素.如果集合中没有元素,会出现NoSuchElementException
offerFirst();
offerLast();
peekFirst();
peekLast();
pollFirst();
pollLast();
如果集合中没有元素,返回null.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2