標籤:迭代器 map
接上篇,《Java基礎——集合(一)——集合體系和Collection》
四.迭代器的使用使用步驟:
1、通過集合對象擷取迭代器對象。
2、通過迭代器對象判斷。
3、通過迭代器對象擷取。
迭代器原理
由於多種集合的資料結構不同,所以儲存方式不同,所以,取出方式也不同。
這個時候,我們就把判斷和擷取功能定義在了一個介面中,將來,遍曆哪種集合的時候,只要該集合內部實現這個介面即可。
迭代器源碼
public interface Iterator { publicabstract boolean hasNext(); publicabstract Object next(); } publicinterface Collection { publicabstract Iterator iterator(); } publicinterface List extends Collection { ... } publicclass ArrayList implements List { publicIterator iterator() { returnnew Itr(); } privateclass Itr implements Iterator { publicboolean hasNext(){...} publicObject next(){...} } }
Collection儲存字串和自訂對象並通過迭代器遍曆 1、儲存字串
Collectionc = new ArrayList(); c.add("hello"); c.add("world"); c.add("java"); Iteratorit = c.iterator(); while(it.hasNext()) { Strings = (String)it.next(); System.out.println(s); }
2、儲存自訂對象(Student類的代碼省略)
Collection c=newArrayList(); Student s1=newStudent("林青霞",26); c.add("s1"); Iteratorit=c.iterator(); while(it.hasNext()) { Strings=(String)it.next(); System.out.println(s); }
ListIterator迭代器是Iterator的子介面
所以List的遍曆方式共有三種
1、Iterator迭代器
2、ListIterator迭代器
3、普通for+get()
五.Map
map是一個鍵值對形式的集合。它的元素都是有鍵和值組成。Map的鍵(key)是唯一的,值(value)可以重複。
Map的功能:
A:添加功能
V put(K key ,V value) :當key在集合中不存在是,添加元素;當key存在時替換元素
B:判斷功能
booleancontainsKey (Object key) :判斷指定的鍵是否在集合中存在
BooleancontainsValue(Object value):判斷指定的值是否在集合中存在
BooleanisEmpty() :判斷集合是否為空白
C:刪除功能
Voidclear():清除所有鍵值對資料
D:擷取功能
Objectget (Object key) :根據鍵擷取值
Set<K> keyset(): 所有鍵的集合
Collection<V>values() :所有值的集合
E:長度功能
Intsize()
Map包括HashMap、HashTable和TreeMap。其中,HashTable已基本被HashMap取代,這裡不做討論。
Map遍曆的兩種方式:(導圖上面已有,這裡直接上代碼了)
鍵找值:
public static void main(String[] args) { Map<String,Integer>map = new HashMap<String,Integer>(); map.put("二陽",23); map.put("二崢",24); map.put("二光",25); Set<String> keys=map.keySet(); //把鍵其中起來,存入到set集合中. for(Stringkey:keys){ //遍曆鍵集合,擷取每一個鍵。增強for Integervalue=map.get(key); //讓鍵去找值 get(Object key) System.out.println(key+"***"+value); }}
鍵值對:
public static void main(String[] args) { Map<String,Integer>map = new HashMap<String,Integer>(); map.put("二陽",23); map.put("二崢",24); map.put("二光",25); Set<Map.Entry<String,Integer>> set=map.entrySet(); //擷取索引值對集合。Set<> entrySet() for(Map.Entry<String,Integer> me:set){ //遍曆索引值對集合,擷取到每一個索引值對。增強for,迭代器 Stringkey=me.getKey(); //通過索引值對擷取鍵getKey() Integervalue=me.getValue(); //通過索引值對擷取值getValue() System.out.println(key+"***"+value); }}
未完待續,下篇為泛型+增強for+工具類
Java基礎——集合(二)——迭代器、Map集合