标签:collection
Collection
|--List:元素有序,可重复,因为该集合体系有索引
|--ArrayList:底层的数据结构使用的是数组结构 查询速度快 线程不同步。
|--LinkedList:底层使用的是链表数据结构 增删速度很快 查询稍慢。
|--Vector:底层的数据结构使用的是数组结构 线程同步,被ArrayList替代了。
|--Set :元素无序,不可重复
List:
特有方法。凡是可以操作交表的方法都是该体系特有的方法。
增
add(index,element);
addAll(index,Collection);
删
remove(index);
改
set(index,element);
查
get(index);
subList(from,to);
listIterator();
假设ArrayList al = new ArrayList();
//获取所有元素
for(int x = 0,x<al.size(),x++)//List集合没有length属性
{
System.out.println(al.get(x));
}
ListIterator
列表迭代器
List集合特有的迭代器。ListIterator是Iterator的子接口
在迭代时 不可以通过集合对象的方法操作集合中的元素,因为会发生并发修改异常(ConcurrentModificationException)
所以在迭代时,只能用迭代器的方法操作元素,可是Iterator方法是有限的
只能对元素进行判断,取出,删除的操作
如果想要其他的操作如添加,修改,就需要其子接口 ListIterator
该接口只能通过List集合的ListIterator方法获取。
/*
Iterator it = al.iterator
while(it.hasNext())
{
//System.out.println(it.next());
Object obj = it.next();
if(obj.equlas("java"))
//al.add("java01") 此时,迭代器和集合都可以对引用进行操作--并发访问(不能对同一种元素进行多种操作)
//it.remove() 当打印时,obj元素不变,al容器中“java”被删除,将javac的引用从集合中删除了,但是obj在使用,所以可以被打印出来
System.out.println(obj);
}
System.out.println(al);
/*
ListIterator li = al.ListIterator();
while(li.hasNext())
{
Object obj = li.next();
if(obj.equlas("java"))
li.add("java02");//与上面绿色字体对比
}
LinkedList
特有方法:
addFirst();//把元素放到第一位 其他位上的依次后移
addLast();
getFirst();////获取元素但不删除
getLast();
removeFirst();//获取元素并且删除
removeLast();
remove如果列表为空 跑出NoSuchElementException
所以一般用
offerFirst();
offerLast();
addFirst/addLast 返回类型为void 而offerFirst/offerLast 返回类型为boolean
如果在一个有限的容器中插入时,超出容器长度,前者抛出异常 后者返回False
peekFirst();
peekLast();
获取元素不删除 如果没有元素 返回null
pollFirst();
pollLast();
获取元素并删除 如果没有元素, 返回null
LinkedList link = new LinkedList
标签:collection
原文地址:http://wwking.blog.51cto.com/9291287/1633198