ava集合框架

 

(一)Collection

Collection定义了集合框架的共性功能。

       1,添加  

              add(e);

             addAll(collection);

       2,删除  

            remove(e);

           removeAll(collection);

           clear();

      3,判断。  

           contains(e);

           isEmpty();

     4,获取

          iterator();

          size();

    5,获取交集。

        retainAll();

   6,集合变数组。

        toArray();

1,add方法的参数类型是Object。以便于接收任意类型对象。

 

2,集合中存储的都是对象的引用(地址)

 

什么是迭代器呢?

             其实就是集合的取出元素的方式。 如同抓娃娃游戏机中的夹子。

     迭代器是取出方式,会直接访问集合中的元素。 所以将迭代器通过内部类的形式来进行描述。 通过容器的iterator()方法获取该内部类的对象。

(二),List

 

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();

     int indexOf(obj):获取指定元素的位置。

      ListIterator listIterator();

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

在迭代时,不可以通过集合对象的方法操作集合中的元素。 因为会发生ConcurrentModificationException异常。

所以,在迭代器时,只能用迭代器的放过操作元素,可是Iterator方法是有限的, 只能对元素进行判断,取出,删除的操作, 如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。

该接口只能通过List集合的listIterator方法获取。

 

 1 package com.itheima.day14;
 2 
 3 import java.util.*;
 4 
 5 
 6 public class ArrayListDemo {
 7 
 8     /**
 9      * 去除ArrayList集合中的重复元素
10      */
11     //定义一个打印的方法
12     public static  void sop(Object obj){
13         System.out.println(obj);
14     }
15     //定义一个方法实现去除集合中的重复元素
16     public static ArrayList Method_delete(ArrayList arl){
17         ArrayList al=new ArrayList();
18         Iterator it=arl.iterator();
19         while (it.hasNext()){
20             Object obj=it.next();
21             if(!al.contains(obj))
22                 al.add(obj);
23         }
24         
25         return al;
26     }
27     public static void main(String[] args) {
28         ArrayList al=new ArrayList();
29         al.add("java01");
30         al.add("java02");
31         al.add("java03");
32         al.add("java02");
33         al.add("java03");
34         al.add("java04");
35         al=Method_delete(al);
36         Iterator it=al.iterator();
37         while (it.hasNext()){
38             
39             sop(it.next());
40         }
41         
42 
43     }
44 
45 }

 

 

   LinkedList:特有方法:

               addFirst();

               addLast();

       getFirst();

       getLast(); 获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException

 

      removeFirst();

      removeLast(); 获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException

在JDK1.6出现了替代方法。

   增

      offerFirst();

     offerLast();

查:

        peekFirst();

        peekLast(); 获取元素,但不删除元素。如果集合中没有元素,会返回null。

          pollFirst();

          pollLast(); 获取元素,但是元素被删除。如果集合中没有元素,会返回null。

 

 1 package com.itheima.day14;
 2 
 3 import java.util.LinkedList;
 4 
 5 public class LinkedListDemo {
 6 
 7     /**
 8      * 使用LinkedList模拟一个堆栈或者队列数据结构。
 9 
10 堆栈:先进后出  如同一个杯子。
11 队列:先进先出 First in First out  FIFO 如同一个水管。
12 
13      */
14 
15     
16     public static void main(String[] args) {
17         Duilie dl=new Duilie();
18         dl.MyAdd("java01");
19         dl.MyAdd("java02");
20         dl.MyAdd("java03");
21         dl.MyAdd("java04");
22         dl.MyAdd("java05");
23         dl.MyAdd("java06");
24         while(!dl.inNull()){
25             System.out.println(dl.MyGet());
26         }
27         
28     }
29 
30 }
31 class Duilie{
32     private LinkedList link;
33     Duilie(){
34         link=new LinkedList();
35         }
36     public void MyAdd(Object obj){
37         link.add(obj);
38     }
39     public Object MyGet(){
40         return link.removeFirst();
41     }
42     public boolean inNull(){
43         return link.isEmpty();
44     }
45     
46     
47     
48 }

 

 

 

 

 

posted @ 2012-10-16 23:52  张学东  阅读(408)  评论(0编辑  收藏  举报