集合框架1

這裏寫圖片描述
爲什麼要使用集合?
儲存數據的容器有:變量,數組,數據庫
內存:變量(單一的空間)數組(多個連續的空間,有下表,訪問數據比較快,但是數組長度固定,只能儲存同一類型,增刪非常麻煩)
外部:數據庫(大量,易於管理)

集合:
* 什麼是集合?
* 集合是java中一個存儲數據的容器
* 在java中集合這種容器有很多種,將這些容器所具備的共性的內容不斷的向上抽取,就形成了一個集合體系
* 集合體系的頂層就是Collection
* 詳細就看圖

  • 怎麼去創建集合?
  • 1.Collection interface
  • 不能直接創建Collection的實例
  • 特點 : 一些 集合 允許有重複的元素,而另一些則不允許。
  • 一些 集合 是有序的,而另一些則是無序的。
    實現集合也就是其子類 Map list set 三大類

List 有序 重複元素的集合 list接口下的集合都有索引
//向指定下表添加元素

 * 添加
 * add(int index, E element) 向指定的下標添加元素
 * addAll(int index, Collection<? extends E> c) 向指定的下標添加另一個集合  
 * 
 * 獲取
 * get(int index)  獲取指定下標的元素
 * 和String類似
 * indexOf(Object o)
 * lastIndexOf(Object o)
 * subList(int fromIndex, int toIndex)  
 * 
 * 迭代器   
   1.同樣不能通過增強for來修改集合
        for (Object object : list) {
        //注意 : 在迭代集合的同時,不能通過集合來修改本身的內容
        if("fff".equals(object)){
            list.add("ggg");//同樣會拋出異常
        }
    }  

    2.  ListIterator li= list.listiterator();
         while(li.hasNext())
         if(li.next.equals("fff")){
         li.add("ggg");  //通過拿到listiterator 通過迭代器本身來對集合進行修改,就不會產生異常
         }
         }


 * 刪除
 * remove(int index) 刪除指定下標的元素
 * 修改
 * set(int index, E element) 修改指定下標的元素 
 * 
 list 可以分爲ArrayList , LinkedList   
ArrayList 數組結構 不同步,線程不安全的集合,效率比較高  儲存的數據不唯一,但是有序(插入順序)便於查找 
爲什麼ArrayList是使用的較多的集合? 查詢的操作比增刪要多  

LinkedList 鏈表結構的集合   

     * 對集合開頭結尾的操作的方法
     * addFirst(Object o);  插入開頭的方法
     * addLast(Object o);  插入結尾的方法     
     * 
       System.out.println(list.removeLast());    //刪除並返回最後一個元素的內容
       System.out.println(list.removeFirst());    //刪除並返回第一個元素的內容  

        //也就類似於查找集合中的元素
        System.out.println(list.getFirst());      //直接返回第一個元素
        System.out.println(list.getLast());      //直接返回最後一個元素


    //創建集合容器
      Collection c = new ArrayList();   
      Collection c1 = new ArrayList(); 

    添加:  
      add(Object e)
      addAll(Collection c) 
        c.add("c1中的內容1");
        c.add("c1中的內容2");
        c.add("c1中的內容3");
    //創建addAll()
        c.addAll(c1);

     判斷: 
     //contains(Object o)  包含
     System.out.println(c.contains("asd")); 
     System.out.println(c.contains(new Student("張三",12)));
     //containsAll(Collection<?> c) 
     System.out.println(c.containsAll(c1));  
     //判斷集合裏面是否爲空
     isEmpty() 



     刪除
     remove(Object o) 刪除指定元素 
     System.out.println("remove : " + c.remove("asd")); //代表刪除成功 返回true
     removeAll(Collection<?> c)刪除闡述集合c中的全部內容
     System.out.println("removeAll : " + c.removeAll(c1));
     System.out.println(c);
     retainAll(Collection<?> c) 保留參數集合c中的全部內容
     System.out.println("retainAll : " + c.retainAll(c1));
     System.out.println(c); 
     clear()清空集合中的所有內容
     c.clear();
     System.out.println(c);

     *  其他:  
     * 
     *  iterator() ***** 迭代器 用於獲取集合中的元素 
     *   獲取迭代器
         Iterator it = c.iterator();  
         //遍歷元素 取出元素的時候,如果存儲的時候數據類型不一致,就很有可能出現 ClassCastException 類型轉換異常 ,泛型的技術來解決這個問題  
         //System.out.println(it.hasNext());//判斷有沒有下一個元素 
         //System.out.println(it.next());;//返回下一個元素  拋出一個異常  NoSuchElementException 沒有元素
         while(it.hasNext()){ 
         System.out.println(it.next());
         }



     *  size()  
        獲取集合中元素的個數
        System.out.println(c.size());  



         toArray()  
         toArray() 將集合轉換成Object類型數據
         Object[] arr = c.toArray(); 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章