集合类
Collection -
|---- List : 元素是有序的,元素可以重复。因为该集合体系有索引。
List : ArrayList : 底层的数据结构使用的是数组结构。 (线程不同步 -- 快,效率高) 特点在于: 查询速度很快!! 但是 增删 很慢。。
LinkedList :底层的数据结构使用的是链表数据结构。 特点: 增删速度很快, 但查询速度很慢!!!!
Vector :底层是数组数据结构。 线程是同步的。 都慢, 被 ArrayList 替代了。
|---- Set :元素是无序的(存入和取出的顺序不一定一直),元素不可以重复。
Set:HashSet TreeSet
ArrayList 常规操作
ArrayList al = new ArrayList(); 1 . 添加元素 al.add(object obj) 、 addAll(collection <~~~~> c) 添加指定集合所有到本集合中 。 2. 获取个数,集合长度(al.size) 3 . 删除元素 al.remove(Object obj)al1.removeAll(al2),清除al1中的al2元素。 清空集合 al.clear()
4. 判断元素存在 al.contains(目标) 判断是否为空 : al.isEmpty(); 5. 交集: al1.retainAll(al2),al1中只会保留和al2中共同的部分。
什么是 迭代器?
iterator() 其实就是取出元素的方式 ! hasNext() next()
List : 凡是可以操作角标的方法都是该体系的方法。
增 add(index,element); add.all(index,collection) 删remove(index) 改 set(index,element) 查:get(index) get(from,to) ListIterator()
添加元素: al.add(Object obj) 在指定位置添加元素,al.add(位置,东西) 删除指定位置上的元素 , al.remove(位置) 修改: al.set(位置,东西)
通过角标获取元素,al.get(位置),
获取所有元素:for( int x=0 ; x< al.size();x++)输出即可 2. Iterator it = al .iterator(); while(it.hasNext()) 输出it.next();
通过 indexOf获取对象位置 : al.indexOf(东西) , List sub = al.subList(1,3) 创建一个对象 , 获取 al集合的对应位置的元素。
hasNext() ,返回值为 boolean,用于判断有没有下一个元素。
演示列表迭代器。 ListIterator 是 是Iterator 的子接口 LIST 带角标/
在迭代时, 不可以通过 集合对象的的方法去操作集合中的元素,因为会发生迭代异常 。
因此,在迭代时, 只能用迭代器的方法去操作元素,可是Iterator 的方法是有限的, 只能对元素进行判断,取出,删除的操作(没别的了)。
所以如果想要其他操作的操作,如添加,修改等。 就需要使用其接口,ListIterator, 该接口只能通过List 集合 的ListIterator 方法获取
ListIterator li = al.ListIterator();
while(li.hasNext())
{
Object obj = li.next();
if( obj.equals("JAVA02")
{li.add("JAVA009")} 或 li.set(”JAVA006“)
}
hasNext() , 后面还有没有 东西, hasPrevious()用于判断前面还有没有元素。