【转】java种集(List/Set/Map/Iterator)(Enumeration/Vector/Stack/Properties)

【转】java类集(List/Set/Map/Iterator)(Enumeration/Vector/Stack/Properties)

java实现类集的包: java.util.*包

类集:动态对象数组(可以保存多个对象在一个数组之中)或链表

          问题:数组长度不可改变,当需要向数组中增加数据的时候需要去考虑对象数组的容量

java类集接口框架

Collection          元素的类集,即对象,每次存放单个对象

        子接口: List         (  ArrayList          LinkedList )

        子接口: Set          (   HashSet         TreeSet  )

         SortedSet

Map                   每次存放一对值:key——> value

         SortedMap

Iterator               输出接口,只要是集合都要去是要使用Iterator输出

          ListIterator

 

详解:

Collection 接口:在一般开发中为了清楚的表现处理数据的存放,往往不直接使用Collection

Collection 的子接口List:(      ArrayList   /  LinkedList       )

# ArrayList      List 使用必须依靠子类——>ArrayList         (继承了AbstractList类)

                   如果使用List,则格式为:List list=new ArrayList();

                   向对象数组中加入数据       list.add("对象");

                   向对象数组中移除数据       list.remove("对象");

                   直接打印System.out.println(all);       结果:[对象1,对象2,对象3]        

                                 对象数据输出顺序与加入顺序一致

         使用类集的时候在加入对象的时候最好只加入同一类对象

                       只能让集合中只加入一种对象:JDK1.5支持     

                        List<java.lang.String>  list = new ArrayList<java.lang.String>();

         需要一个一个对象打印出来的时候,方法有:

               1,使用for循环: size()方法求出对象数组的长度

               2,使用Iterator输出:因为集合的长度不固定,所以Iterator采用的方法是一个一个判断输出

                          (  判断是否有下一个元素:public boolean hasNext()  )

                            Iterator iter=list.iterator();

                            While(iter.hasNext()){

                                    Object obj=iter.next();

                                    System.out.println(obj);

                              }

 

        (Collection)集合操作的主要方法:

        加入数据:public boolean add(Object obj)

        删除数据:public boolean remove(Object obj)

                          public boolean remove(int index)

        为Iterator实例化:public Iterator iterator()

        取出元素的个数:public int size()

#LinkedList      提供了一个链接列表数据结构    

 

Collection 的 子接口Set:( HashSet   /   TreeSet)

异同

        1,Set的基本使用与List一致,但是HashSet子类存放时是无序的(散列存放)。

        Set<java.lang.String> set=new HashSet<java.lang.String>();

         2,List中的数据允许重复元素,重复元素保留下来。

               Set中的数据不允许有重复元素,重复元素被替换掉。

#HashSet          无序存放(散列存放)

#TreeSet           有序存放  (升序存放)

                   靠Comparable接口排序(如,输入为GBEACFD,输出为ABCDEFG)

 

Iterator :从前到后顺序输出(不能从后向前)

        ListIterator:允许双向遍历列表,并可修改单元

       

Map接口中   ( HashMap    /     TreeMap )

#HashMap  映射类     key——>value        异步处理方式

 

Map的主要功能是作为查找使用,不是输出使用。

          存入数据方法:put(Object key,Object value)

          取出数据方法:Object get(Object key)               // 根据key取value

 

                Map<java.lang.String,java.lang.String> map=new HashMap<java.lang.String,java.lang.String>();

                map.put("键","数据值");

                System.out.println(map.get("键"));

 

Map接口的对象不能直接使用Iterator输出。

         如果一定要使用Iterator输出Map接口对象的内容,必须使用以下步骤:

         Map -> Set -> Iterator -> Map.Entry -> key、values

 

                  Set set=map.entrySet();

                  Iterator iter=set.iterator();

                  while(iter.hasNext()){

                            Map.Entry me=(Map.Entry)iter.next();

                            System.out.println(me.getKey()+"——>"+me.getValue());

                   }

#TreeMap  按key排序

 

以上均为JAVA 2 所带新特性!!

 

以下介绍JAVA 1:

#Enumeration:枚举,与Iterator的功能一直,都是用于输出集合中的内容

                                              Enumeration                                        Iterator

 判断是否有下一个内容          hasMoreElements()                              hasNext()

 取值                                      nextElement()                                       next() 

 

 

List和Set都不能使用Enumeration输出

而List的另外一个子类:Vector 可以使用Enumeration 输出

#Vector    实现动态数组,同步处理

                   Vector vector=new Vector();     //如果换为List vector=new Vector();则Enumeration无法使用

                    vector.add("elements");

                    vector.add("elements");

                    vector.add("elements");

                    Enumeration e=vector.elements();

                    while(e.hasMoreElements()){

                       System.out.println(e.nextElement())

                     }

 

栈是一个先进后出(后进先出)的操作

#Stack        (Vector的子类)

 

                    Stack stack=new Stack();

                      stack.push("a");

                      stack.push("b"); 

                      stack.push("c"); 

                      stack.push("d");

                     while(!stack.empty()){

                      System.out.println(stack.pop());

                     }

//浏览器的页面的前进后退就是利用堆栈实现

//若栈中所有内容弹出

 

#HashTable    与HashMap相似,但HashTable是同步处理方式的

                        不支持迭代函数

#Properties       HashTable的子类

属性类 ,用来保持值的列表

异同:Properties类主要是保存字符串的,而Hashtable是保存对象的

          setProperty(String key,String value)

          getProperty(String key)

 

【转】java种集(List/Set/Map/Iterator)(Enumeration/Vector/Stack/Properties)