集合类

 

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()用于判断前面还有没有元素。   

 

posted @ 2019-08-25 20:05  蚂蚁雅黑1010  阅读(112)  评论(0编辑  收藏  举报