Java基础——集合(二)——迭代器、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+工具类

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。