List集合:
void add(int index, Object obj); 在指定位置添加指定元素
Object remove(int index); 移除集合中指定位置的元素,并将被移除的元素返回
Object get(int index); 根据索引,返回对应位置的元素
Object set(int index,Object obj); 修改指定位置的元素
List体系的独有遍历方式:
1、get()和size()方法结合使用。
并发修改异常:ConcurrentModificationException
产生原因:
用普通的迭代器遍历集合的时候,同时对集合中的元素进行了修改(添加或者删除)。
解决方案:
用列表迭代器(ListIterator)来遍历,并且通过列表迭代器的add()方法来添加元素。
ListIterator列表迭代器:
public boolean hasNext(); //判断集合中是否有下一个元素(正向遍历)
public Object next();
public boolean hasPrevious(); //判断集合中是否有上一个元素(逆向遍历)
public Object previous();
注意事项:
进行逆向遍历之前,必须先对集合进行正向遍历,否则结果可能不是我们想要的。
Vector类:(了解)
有些企业中的项目,如果是早起研发的,那么可能使用的集合是Vector,咱们能看懂他们写的是什么意思就行了。
数据结构:数组和链表
数组:查询快,修改快,增删慢。
因为每个元素都有编号(索引),并且编号从0开始。
链表:查询慢,修改慢,增删快。
List三个儿子的特点:
ArrayList:底层是数组,查询快,增删慢。线程不安全,效率高。
Vector:底层是数组,查询快,增删慢。线程安全,效率低。
LinkedList:链表。查询慢,增删快。线程不安全,效率高。
什么时候使用List的那个儿子?
查询多:ArrayList
增删多:LinkedList
都多,或者你不知道你不知道用谁: ArrayList
练习:
我有一个集合,然后往里边添加hello,world,java三个元素,
我想判断里面有没有“world”这个元素。
如果有,我就添加一个“javaee”元素,
没有什么都不添加。
注意:用迭代器来做。
|
|