zoukankan      html  css  js  c++  java
  • 菜鸟日记之 java中的集合框架

                                     

                       java中的集合框架图

     

                                

                      如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合

                             Collection单列集合:继承了Iterator接口所以具有了iterator()方法 ,该方法返回一个Iterator<T>,这个接口具有

                             HasNext (),next(),remove()3个方法可以在实现类里完成实现。

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

                                                         

                                                 cusor是当前的操作下标

                                      next():读取下一个元素

                                                           

                                      remove():删除参数 

                                                                   

                                                                          lastret为上个操作的下标

      Collection有两个子接口set和list

           set:储存唯一,不要求有序的一组对象

                set存储的是元素的引用,如两个元素的引用相等,或者其值相等,hash值也想相等,则set只保存一个同理set集合中只有一个null

                                                             例:

                                                                         Set  set=new HashSet

                                                                         String a=" ";

                                                                         String  b=a;

                                                                          set.Add(a);

                                                                          set.add(b);

                                                                        //输出集合set的元素个数

                                                                     System.out.println(set.size());              //结果是1个   :两者的引用为一个所以只能添加一个

                 list:存储一组不唯一,但有序的对象

                      list的两个实现类:

                       ArrayList:与数组相同的存储方式,但是完成了存储集合的大小可变的改变比数组更灵活。

                       LinkedList:链式储存,集合的每一项都储存了下一项的引用,更利于元素的新增和删除操作,相比后ArrayList查询和修改,LinkedList新    增和删除

                       其实在ArrayList之前还有一个Vector集合类,他与ArrayList基本相同,最大的区别就是Vector是线程安全的,而ArrayList是线程不安全                                        的。ArrayList轻安全,而速度快,Vector线程安全,但速度慢。

           Map:双列集合: 集合中的每一项都是成对的key ,value Map接口并不继承Iterable接口或实现该接口所以不能直接进行遍历

                                                         

                                  key:有唯一,不要求有序

                                  value:不唯一,不要求有序

                                   Map集合遍历的三种方法:

                                       

        public static void main(String[] args) {
    
              Map<String,String> map=new HashMap<String,String>();
              map.put("CN", "中华人民共和国");
              map.put("UK","联合国");
          
            //方法1 双列集合无法遍历了?那就通过方法把他转成单列 ! 用集合名.entryset方法 得到Set<Entry<String, String>>的返回值
              for (Entry item : map.entrySet()) {
                System.out.println(String.format("key的值是%s	value的值是%s",item.getKey(),item.getValue()));
              }
              
            //方法2 通过得到key键的集合,然后通过Map的方法map.get(key)用key得到value
              for (String key : map.keySet()) {
                System.out.println(String.format("key的值是%s	value的值是%s",key,map.get(key)));
              }
              //方法3for循环中自动实现了迭代器,如不用for循环,那就手动完成迭代器操作
              Iterator<String> keys=map.keySet().iterator();
              while(keys.hasNext()){
                 String item=keys.next();
                  System.out.println(String.format("key的值是%s	value的值是%s",item,map.get(item)));
              }
              
              
        }

      如果只是想遍历value的值那直接使用 map.values()方法就行了;

                              注:所有继承或实现了Iterable类的集合类都可以用迭代器进行遍历

         例:

    ArrayList(继承)-  AbstractList -(在这个ArrayList的父类中实现了继承自 Iterable的iterator方法,并得到了该方法返回的类Iterator及其的3个方法,实现了他们之后使自身可使用迭代器) -  implements(实现) -- List    extends (继承)  -   Collection   extends (继承)- Iterable        所有可以使用迭代器的集合类都有相似的继承,实现关系。

                                    

  • 相关阅读:
    df
    浅谈C#垃圾回收
    eclipse+ADT 进行android应用签名详解
    Android Monkey工具参数意义
    Android Monkey(转载)
    清理Win7右键菜单里“发送到”选项
    Android中LOG机制详解(上)  
    关于微博内容中的短地址ShortURL
    Android中LOG机制详解(下)
    黑盒测试用例设计方法实践(判定表驱动法)
  • 原文地址:https://www.cnblogs.com/xiangtianxiayu/p/4912886.html
Copyright © 2011-2022 走看看