陣列和集合哪個效率高_Java學習——集合(collection)小結(1)
技術標籤:陣列和集合哪個效率高
1. 為什麼需要集合?
答:陣列就是一種容器,可以在其中放置物件或基本型別資料,但是容量需要事先定義好,不能隨著需求的變化而擴容。基於陣列並不能滿足我們對於“管理和組織資料的需求”,所以我們需要一種更強大、更靈活、容量隨時可擴的容器來裝載我們的物件。集合(Collection)便可以滿足這種要求。
2.Collection、Set、List介面的特徵是什麼?
Collection 介面儲存一組不唯一,無序的物件
List 介面儲存一組不唯一,有序(索引順序)的物件
Set 介面儲存一組唯一,無序的物件
3.ArrayList底層及其特點?
答:ArrayList底層是用陣列實現的儲存。 特點:查詢效率高,增刪效率低,執行緒不安全。我們一般使用它。
4.ArrayList的常用方法有哪些?
add(Object obj)//新增元素
list.size()//容器的大小
list.addAll(Collection c)//把容器c中的所有元素,新增到list中(可重複,有序)
list1.remove( )//根據索引刪除
list1.remove(3);//根據索引刪除
list1.contains("123")//是否包含某個元素
list1.clear();//清空集合中的所有元素物件
list2.get(0)//獲取指定索引位置的物件
list2.set(0, "aadd")//根據索引位置 修改物件
list2.add(2, "tianjia")//指定索引位置 新增對
list2.indexOf("hh")//(10)查詢元素在集合中的位置
List
5.ArrayList底層擴容易原理是什麼?
答:本質上就是通過定義新的更大的陣列,將舊陣列中的內容拷貝到新陣列,來實現擴容。 ArrayList的Object陣列初始化長度為10,如果我們儲存滿了這個陣列,需要儲存第11個物件,就會定義新的長度更大的陣列,並將原陣列內容和新的元素一起加入到新陣列中,每次擴容是原來的1.5倍 。
![17e97a91bf208f9629d7752f812f21eb.png](https://img.796t.com/res/2020/12-10/02/0a32533c6cfc74dbd74ddc33e7a62f4a.png)
![9b3f560debf4cedc438ffd04ee4d5d1d.png](https://img.796t.com/res/2020/12-10/02/471f25195e9113e4c26e1bb037871bc8.png)
6.LinkedList知識小結
答:LinkedList底層用雙向連結串列實現的儲存。特點:查詢效率低,增刪效率高,執行緒不安全。雙向連結串列也叫雙鏈表,是連結串列的一種,它的每個資料節點中都有兩個指標,分別指向前一個節點和後一個節點。 所以,從雙向連結串列中的任意一個節點開始,都可以很方便地找到所有點。
LinkedList和ArrayList都實現了介面List所以有很多方法都是一樣的。LinkedList中獨有的幾個方法有:addFirst();addLast(); removeFirst(); removeLast()。
![d7e231066fcc8fcf9889894991fdf72e.png](https://img.796t.com/res/2020/12-10/02/7cd1bbf5c58155fe66f3c5fd6bc430c9.png)
7.Vector的簡介
答:Vector底層是用陣列實現的List,相關的方法都加了同步檢查,因此“執行緒安全,效率低”。獨有的方法:addElement();removeElement();
8.Vector和ArrayList區別
答:Vector執行緒安全,效率低;ArrayList執行緒不安全,效率高。
9.Map簡介
答:Map就是用來儲存“鍵(key)-值(value) 對”的。 Map類中儲存的“鍵值對”通過鍵來標識,所以“鍵物件”不能重複。Map 介面的實現類有HashMap、TreeMap、HashTable等。
![8baa8d72f112181175454a9807224d2a.png](https://img.796t.com/res/2020/12-10/02/f2e50b29168c2a1fde51c1a4c7d219a3.png)
Map
10.HashMap知識小結
答:HashMap採用雜湊演算法實現,是Map介面最常用的實現類。 由於底層採用了雜湊表儲存資料,我們要求鍵不能重複,如果發生重複,新的鍵值對會替換舊的鍵值對。 HashMap在查詢、刪除、修改方面都有非常高的效率。
11.HashMap與HashTable的區別
答:1. HashMap: 執行緒不安全,效率高。允許key或value為null。
2. HashTable: 執行緒安全,效率低。不允許key或value為null。
12.集合的幾種遍歷方法
遍歷集合內容