Java學習(三)數據結構

數據結構

  部分常用數據結構

在這裏插入圖片描述

接口 概述
LIST 有序,可重複。一種知道索引位置的集合。
SET 不允許重複。
MAP 鍵值對、鍵唯一、值不唯一。

List(有序,可重複)

  ArrayList

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable

  底層數據結構是數組,相當於是動態數組。查詢快,增刪慢
  線程不安全,效率高
  遍歷時使用下標for循環最省時。

  Vector

public class Vector<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable

  底層數據結構是數組,查詢快,增刪慢
  線程安全,效率低,還可以指定增長因子
  遍歷時使用下標for循環最省時。

  LinkedList

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable

  底層數據結構是雙向鏈表,查詢慢,增刪快
  線程不安全,效率高
  遍歷時使用迭代器最省時。

Set(無序,唯一)

  HashSet
  底層數據結構是哈希表。構造函數內初始化HashMap。HashSet是用HashMap來保存數據,而主要使用到的就是HashMap的key。

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable
    public HashSet() {
        map = new HashMap<>();
    }

  LinkedHashSet

public class LinkedHashSet<E>
    extends HashSet<E>
    implements Set<E>, Cloneable, java.io.Serializable 

  底層數據結構由雙向鏈表和哈希表組成。內部實現使用LinkedHashMap。由鏈表保證元素有序。由哈希表保證元素唯一。

  TreeSet
  基於TreeMap實現的底層數據結構是紅黑樹。(是一種自平衡的二叉樹)

public class TreeSet<E> extends AbstractSet<E>
    implements NavigableSet<E>, Cloneable, java.io.Serializable
    public TreeSet() {
        this(new TreeMap<E,Object>());
    }

Map(雙列集合)

  HashMap
  底層數據結構是哈希表.由數組+鏈表組成的。線程不安全,效率高

  LinkedHashMap
  底層數據結構由鏈表和哈希表組成。由鏈表保證元素有序。由哈希表保證元素唯一。

  Hashtable
  底層數據結構是哈希表。線程安全,效率低。

  TreeMap
  底層數據結構是紅黑樹。(是一種自平衡的二叉樹)
在這裏插入圖片描述

關於泛型

  其中有三件事是重要的:

  1. 創建被泛型化類實例
new ArrayList<Test>()
  1. 聲明與指定泛型類型的變量
List<Test> list = new ArrayList<Test>();
  1. 聲明(與調用)取用泛型類型的方法
    List<Test> testList = new ArrayList<Test>();
    t.demo(testList);

    private void demo(List<Test> list) {

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章