各容器与迭代器的用法

(一)
关于迭代器:
迭代器有两个:Enumeration已经不是主流,Iterator是它的下一代替代品.
(二)
关于容器:
Collection FrameWork如下:
Collection     (最基本的集合接口)
├List         (可以包含重复元素)
│├LinkedList
│├ArrayList  (线程不安全的,就是不同步的;数据增长:默认增长为原来一半)
│└Vector     (线程安全的,也就是说是同步的;数据增长:默认增长为原来一倍)
│ └Stack
└Set          (不包含重复元素)
Map            (Map是键-值的映射关系)
├Hashtable    (基于陈旧的Dictionary类;线程安全,即同步;null不可作为它的key或value)
├HashMap      (Map接口的一个实现;线程不安全,即不同步;null可作为它的key或value)
└WeakHashMap

 
hashtable,hashmap,arraylist,vector,iterator的实例及总结:
(2.1)
总结一:
vector,arraylist,hashtable,hashmap:
1.
都可采用iterator(hasNext()--next())来作为迭代器,
也可采用for--size()--get()的方法来进行历遍.
都可用toString()方法来显示整个容器的内容.
都可用:if( xx!=null&&!xx.isEmpty() )来进行判断.
2.
vector,arraylist:插入东西都用add(),都可用addAll()加载其它容器的内容.
hashtable,hashmap:插入东西都用put(),get(),remove(),clear(),isEmpty(),containsKey().
总结二:
hashtable,hashMap:用iterator迭代器时,是用其key来作为历遍的,即: xx.keySet
().iterator+xx.get(it.get(i)).而不像vector,arraylist,直接xx.iterator().
总结三:
hashtable自己本身的迭代器是Emuneration(用方法xx.keys(),xx.elements()),而不是iterator.
总结四:
将hashtable,hashmap的key放于vector,arraylist.如下:
Vector ve=new Vector(hashtable1.keySet());
ArrayList al=new ArrayList(hashtable1.keySet());
总结五:
hashtable,hashmap的数据,后进先出;
vector,arraylist的数据,先进先出;
总结六:
HashSet的方法与arraylist的方法,相同.但hashset不允许内容有重复.若有重复不会报错,而会返回
一个fasle值.且在进行历遍时,就可看到效果了.
(2.2)
实例:
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.HashMap;
import java.util.Vector;
import java.util.ArrayList;
import java.util.Iterator;
public class JavaContainerDemo {
 public static void main(String[] args)
 {
  Hashtable ht=new Hashtable();
  ht.put(0,"jason");
  ht.put(1,"test");
  ht.put(2,"access");  
  if(ht.contains("jason")&&ht.containsKey(1)&&!ht.isEmpty())
  {
   ht.remove(2);
  }
  System.out.println("hashtable,是先入后出");
  System.out.println("hashtable.keySet():"+ht.keySet());
  System.out.println("hashtable.toString():"+ht.toString());
  System.out.println("*****历遍方式一:Enumeration*******");
  Enumeration hte= ht.keys();
        //从hashtable,hashmap获取出来的key,value的数据类型都是:Object
  Object key;
  while(hte.hasMoreElements())
  {
//System.out.println("hashtable's key:"+hte.nextElement());
//System.out.println("hashtable's value:"+ht.get(hte.nextElement()));
//不能用这样的方式进行历遍,在一个while中,使用两次nextElement(),指针会跳两次的.应该是:
   key=hte.nextElement();
   System.out.println("hashtable's key:"+key);
   System.out.println("hashtable's value:"+ht.get(key));
   
  }
  System.out.println("*****历遍方式二:iterator*******");
System.out.println("*****hashtable是键值对存在的,所以只能用keySet().iterator*******");
  Iterator hti=ht.keySet().iterator();
  Object key2;
  while(hti.hasNext())
  {
   key2=hti.next();
   System.out.println("hashtable's key:"+key2);
   System.out.println("hashtable's value:"+ht.get(key2));
  }
  System.out.println("*****历遍方式三:for*******");
  for(int i=0;i<ht.size();i++)
  {
   System.out.println("hashtable's key:"+i);
   System.out.println("hashtable's value:"+ht.get(i));
  }
  //ht.clear();
  
  HashMap hm=new HashMap();
  //hm.put(null, null); hashmap允许key-value都为null
  hm.put(0, "hwj");
  hm.put(1, null);
  hm.put(2, "access");
  if(hm.containsKey(0)&&hm.containsValue("access")&&!hm.isEmpty())
  {
   hm.remove(1);   
  }
  System.out.println("hashmap,也是先进后出");
  System.out.println("hashmap.keySet():"+hm.keySet());
  System.out.println("hashmap.toString():"+hm.toString());
  System.out.println("*****hashmap历遍方式一:iterator*******");  
  Iterator hmi=hm.keySet().iterator();
  Object key3;
  while(hmi.hasNext())
  {
   key3=hmi.next();
   System.out.println("hashmap's key:"+key3);
   System.out.println("hashmap's value:"+hm.get(key3));
  }
  System.out.println("*****hashmap历遍方式二:for*******"); 
  for(int j=0;j<hm.size();j++)
  {
   System.out.println("hashmap's key:"+j);
   System.out.println("hashmap's value:"+hm.get(j));
  }
  //hm.clear();
  
  
  Vector v=new Vector(ht.keySet());
  System.out.println("vector原来的大小:"+v.size());
  v.add("中国人");
  v.addElement("香港人");
     System.out.println("利用vector.addAll(container)去加载其它容器中的内容");
  v.addAll(hm.keySet());  
  //v.setElementAt("数据2", 2);
  
  if(v!=null&&!v.isEmpty())
  {
   System.out.println("vector现在的大小:"+v.size());
  }
  
  System.out.println("*****vector:是先入先出*******");
  System.out.println("vector.toString():"+v.toString());
  System.out.println("*****vector历遍方式一:iterator*******");
  Iterator vi=v.iterator();
  while(vi.hasNext())
  {
   System.out.println("vector's value:"+vi.next());
  }
  System.out.println("*****vector历遍方式二:for*******");
  for(int m=0;m<v.size();m++)
  {
          //System.out.println("vector's value:"+v.get(m));
   //v.get(m)=v.elementAt(m),arraylist没此方法
   System.out.println("vector's value:"+v.elementAt(m));
  }
  
  ArrayList al=new ArrayList(hm.keySet());
  System.out.println("arraylist原来的大小:"+al.size());
  al.add("杰森");
 System.out.println("利用arraylist.addAll(container)去加载其它容器中的内容");
  al.addAll(v);
  
  if(al!=null&&!al.isEmpty())
  {
   System.out.println("arraylist现在的大小:"+al.size());
  }
  System.out.println("*****arraylist:是先入先出*******");
  System.out.println("*****arraylist.toString()"+al.toString());
  
  System.out.println("*****arraylist历遍方式一:iterator*******");
  Iterator ali=al.iterator();
  while(ali.hasNext())
  {
   System.out.println("al's value:"+ali.next());
  }
  
  System.out.println("*****arraylist历遍方式二:for*******");
  for(int n=0;n<al.size();n++)
  {
   System.out.println("al's value:"+al.get(n));
  }
//HashSet的方法与arraylist的方法,相同.但hashset不允许内容有重复.若有重复不会报错,而会返
回一个fasle值.
//且在进行历遍时,就可看到效果了.
  HashSet hs=new HashSet();
  hs.add("1");
  hs.add("1");
  Iterator hsi=hs.iterator();
  while(hsi.hasNext())
  {
   System.out.println("hashset's value:"+hsi.next());
  }  
 }
}

你可能感兴趣的:(职场,休闲)