Java基础――集合二――迭代器、Map集合

         接上篇,《Java基础――集合(1)――集合体系和Collection》

4.迭代器的使用

使用步骤:

         1、通过集合对象获得迭代器对象。

         2、通过迭代器对象判断。

         3、通过迭代器对象获得。

迭代器原理

         由于多种集合的数据结构不同,所以存储方式不同,所以,取出方式也不同。

         这个时候,我们就把判断和获得功能定义在了1个接口中,将来,遍历哪一种集合的时候,只要该集合内部实现这个接口便可。

迭代器源码

          

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的遍历方式共有3种

                   1、Iterator迭代器

                   2、ListIterator迭代器

                   3、普通for+get()

5.Map

map是1个键值对情势的集合。它的元素都是有键和值组成。Map的键(key)是唯1的,(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(2阳,23); map.put(2峥,24); map.put(2光,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,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+工具类

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...