1. 程式人生 > 其它 >Java 集合框架繼承體系

Java 集合框架繼承體系

先說點別的:

  集合和陣列的區別:

       集合:長度可變,集合儲存不同型別元素,集合只可以存引用型別。

       陣列:陣列長度固定不可變,陣列儲存同一型別元素,陣列可以存基本型別,也可以存引用型別。

現在來說說繼承體系:(這個圖是重點,一定要熟記於心!!!!)

 Collection和Map是同級關係。

現在來一步一步的看:

    1:新增功能

       boolean add(Object obj):新增一個元素

      boolean addAll(Collection c):新增一個集合的元素

    2:刪除功能

      void clear():移除所有元素

      boolean remove(Object o):移除一個元素

      boolean removeAll(Collection c):移除一個集合的元素(是一個還是所有)

    3:獲取功能

      Iterator iterator()(重點)

    4:判斷功能

      boolean contains(Object o):判斷集合中是否包含指定的元素

      boolean containsAll(Collection c):判斷集合中是否包含指定的集合元素(是一個還是所有)

      boolean isEmpty():判斷集合是否為空

    5:長度功能

      int size():元素的個數

這塊有個面試題,可能會遇到,看到的小夥伴可以注意一下

     {陣列有沒有length()方法呢?字串有沒有length()方法呢?集合有沒有length()方法呢?} 一定要記住哦!

陣列求長度用length屬性

字串求長度用length()方法

集合求長度用size()方法

二丶迭代器(集合獨有的遍歷方式)

用while
    Iterator  iterator=collection.iterator();
            while(iterator.hasNext()) {
               System.out.println(iterator.next());                  
              }
    
    用for迴圈
   Iterator  iterator
=collection.iterator(); for(;iterator.hasNext;){ System.out.println(iterator.next()); }

List:

   代表一個元素有序、且可重複的集合,集合中的每個元素都有其對應的順序索引
   允許使用重複元素,可以通過索引來訪問指定位置的集合元素。
   預設按元素的新增順序設定元素的索引。

package test1;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.junit.Test;

public class TestList {
//ArrayList是List的主要實現類
    public void test() {
        List list=new ArrayList();
        //新增元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add(123);
        System.out.println(list);
        
        //查詢
        System.out.println(list.get(1));
        //刪除
        System.out.println(list.remove(1));
        System.out.println(list.get(1));
        //修改
        list.set(0, 345);
        System.out.println(list.get(0));    
        
    }
    @Test
    public void test1() {
        List list=new ArrayList();
        //新增元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add(123);
        //for迴圈
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("========");
        //foreach
        for (Object object : list) {
            System.out.println(object);
        }
        System.out.println("========");
        //迭代器
        Iterator i=list.iterator();
        while (i.hasNext()) {
            System.out.println(i.next());
        }
    }

}

ArrayList:

  底層資料結構是陣列,查詢快,增刪慢。 執行緒不安全,效率高。

Vector:

  底層資料結構是陣列,查詢快,增刪慢。 執行緒安全,效率低。

LinkedList:

  底層資料結構是連結串列,查詢慢,增刪快。 執行緒不安全,效率高。

Set:

無序(輸出的順序和插入的順序不一樣),不允許重複

hashset

  不保證順序

  底層資料結構是雜湊表

linkedhashset

  底層是雜湊表加連結串列

  雜湊表保證唯一性,連結串列保證有序

treeset

  可以排序 使用元素自然排序排序

  使用Comparator

Map 和collection的區別

map儲存元素是成對出現的,鍵是唯一的,值可重複

Collection儲存元素是單獨的

map集合的資料結構只針對鍵有效,和值無關

collection的資料結構針對元素有效

功能

Map集合的功能概述:

1:新增功能 V put(K key,V value):新增元素。這個其實還有另一個功能

如果鍵是第一次儲存,就直接儲存元素,返回null

如果鍵不是第一次存在,就用值把以前的值替換掉,返回以前的值

2:刪除功能 void clear():移除所有的鍵值對元素 V remove(Object key):根據鍵刪除鍵值對元素,並把值返回

3:判斷功能 boolean containsKey(Object key):判斷集合是否包含指定的鍵 boolean containsValue(Object value):判斷集合是否包含指定的值 boolean isEmpty():判斷集合是否為空

4:獲取功能 Set<map.entry<k,v>> entrySet():??? V get(Object key):根據鍵獲取值 Set keySet():獲取集合中所有鍵的集合 Collection values():獲取集合中所有值的集合

5:長度功能  int size():返回集合中的鍵值對的對數

hashmap

  鍵是雜湊表結構,可以保證鍵的唯一性

LinekedHashMap Map 介面的雜湊表和連結列表實現,具有可預知的迭代順序。

TreeMap 鍵是紅黑樹結構,可以保證鍵的排序和唯一性

Collections

Collections:是針對集合進行操作的工具類,都是靜態方法。

面試題: Collection和Collections的區別?

Collection:是單列集合的頂層介面,有子介面List和Set。

Collections:是針對集合操作的工具類,有對集合進行排序和二分查詢的方法

要知道的方法

  public static void sort(List list):排序 預設情況下是自然順序。

  public static int binarySearch(List list,T key):二分查詢

  public static T max(Collection coll):最大值

  public static void reverse(List list):反轉

  public static void shuffle(List list):隨機置換

HashMap和Hashtable的區別

  map執行緒不安全的,效率高

  table安全,低

List,Set,Map等介面是否都繼承子Map介面