集合类的学习(一)

面向对象语言对对象进行操作,为方便对多个对象操作,就对对象存储,集合就是存储对象的最常用方式。

集合长度可变,存储的内容格式不唯一。

 

在集合框架中,为什么出现多种容器?

 因为每一个容器对数据的存储方式不同。这种存储方式称为“数据结构”。

                    |---List  :元素是有序的,元素可以重复,因为该集合体系有索引(即脚标)

collection--|--Set:元素是无序的,元素不可以重复。

 

一、添加

  ArrayList  al=new ArrayList();// 新建一个容器

   al.add(对象1);  al.add(对象2);// al.size()为 2.

   add()方法的参数类型是Object,以便于接收任意类型对象,    集合中存储都是对象的引用。

二、打印

S.o.p(al);            打印结果:[对象1,对象2]

三、删除

al.remove(对象1);

四、是否包含

al.contains(对象1)

取交集:al.retain(al2);  此操作之后,al中存放的是al和al2的交集。

但是如果:System.out.println(al.retain(al2));//当两个对象有交集时,输出 true,反之输出false。

五、获取

使用迭代器,获取集合中的元素

Iterator it=al.iterator();//调用iterator方法得到迭代器 it。

 

什么是迭代器?

本质就是集合的元素取出方式。

将获取元素的这个方式定义在集合中,这样就可以直接访问其中元素。那么取出方法就是内部类, 而每个容器中的元素不一样,那么取出方式也不一样,但都有共性内容(比如都是要先判断是否有,再取)。那么将这些共性抽取成接口Iterator,  通过集合引用中iterator()方法建立。

对于List 体系中;其有些针对 脚标操作的特有方法。

1、添加

 ArrayList al=new ArrayList();

al.add("java01");   al.add("java02");

al.add(1,"java03");//------------>al:[java01,java03,java02]

2、删除

al.remove(2),将脚标为2的元素删除

al:[java01,java03]

3、修改

al.set(1,"java007")

al:[java01,java007]

4、查找

al.get(1);----------------->脚标为1的元素:java007

获取所有元素:建议使用迭代器

 

 

List 集合特有的迭代器:ListIterator是Iterator 的子接口

 

在迭代时,不能用集合对象的方法去操作元素对象,因为会发生异常。所以,在此时用迭代器来操作元素,可是Iterator方法中只能判断(hasNext())、

取出(next()),删除(remove())操作,如果要进行添加,修改就需要其子接口,ListIterator 实现。   该接口能能通过List集合的listiterato方法获取

                        |---->ArrayList:底层的数据结构使用的数组结构,特点:查询快,删除,添加慢,线程不同步

                        |

                         |--->LinkedList  底层的数据结构是链表结构,特点:查询慢,删除、添加快

list ----------- |--->Vector     底层也是数组数据结构;线程同步

                    Vector 特有的取出方式:Enumeration 枚举:枚举的应用和迭代器相似。

 

 

LinkedList 的特有方法

addFirst()//添加到第一位置;  addLast()//添加的末尾,   getFirst()//获取第一位元素       

getLast()//获取最后一个元素

removeFirst()//移除第一个元素,并返回该元素                          removeLast().//移除并

返回最后一个元素

例子:用LinkedList方法设计堆栈和队列的数据结构

分析: 主要区别    堆栈:先进后出             队列:先进先出

 

class lianxi

{

   private LinkedList link;

            lianxi()

             {

                link=new LinkedList()

              }

  public void myAdd(Object obj)

     {  

        link.addFirst();             //进入方法 1     

     }

     public voie myGet(Object obj)                                  如果 进入方法1 和取出方法 1 结合,则是先进 先出,队列结构

              {                                                                                                         和取出方法2结合,是先进后出,堆栈结构。

      link.getLast();                   //取出方法 1

                     //   link.removeFirst();     取出方法2

            }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值