容器與數組
數組:存儲的基本數據類型/對象,但是數組的尺寸恆定。
容器:存放對象Object,可自定義調整自己的尺寸
容器的API類圖
Set中元素無序,但是不能有重複的元素;
List必須按照插入的順序保存元素,元素可重複;
Map存放成對的**“鍵值對”對象**,使用鍵來查找值
Collection接口
collection接口是存放一組對象的方法
方法:
- int size()
- boolean isEmpty()
- boolean add(object element)
- boolean remove(object element)
- Iterator iterator()
在移除某個具體對象之時,需要提前判斷該對象是否在容器內,此時需要用到equals方法判斷兩個對象是否相等。
故定義類時需要給出自定義的equals方法。
List接口
-
實現類:ArrayList
數組實現,隨機讀取元素,修改時需要移動大量數據 -
實現類:LinkedList
鏈表實現,修改元素改變指針即可
方法:
-object get(int index)
- object set(int index,object element):返回類型爲object,返回的是舊的那個對象
- object remove(int index):返回的是剛在原來在index位置上的對象
- void sort(List):對list容器內的元素排序,實現代碼爲Collections.sort(List1);
- int binarySearch(List,object):對於順序的List容器,採用折半查找的方法查找特定對象
List中的元素可排序,即其存放的對象的類需要實現comparable接口,並且重寫他的compareTo()方法
Set接口
set中元素無序,但是不可以有重複
Iterator接口
- 迭代器,實現對容器內元素的遍歷操作
- 方法:
- iterator()來返回一個Iterator
- next()獲得序列中的下一個元素,通過next()獲得的元素類型爲Object類型,需要強轉成需要的類型
- hasNext()檢查序列中是否還有元素
- remove()將迭代過程中刪除元素
Map接口
實現類:HashMap 和TreeMap
- 存儲鍵值對,鍵值不可重複(鍵、值皆爲對象)
- 利用hashCode()函數判斷鍵值對是否相等
- 對基礎對象具有自動打包功能,即自動將int轉換成Integer對象 eg:map1.put(“two”, 2);
- 同時對基對象也有自動解包功能
方法:
- void put(key,value)存入該鍵值對
- Object get(key),返回的其實是value的值即value位置存放的對象
泛型(generic)
- 定義集合的同時指定集合中對象的類型
- 例如:List c = new ArrayList();表明List中只可以裝String類型的對象
- 各方法返回的是<>中指定的對象類型,不需要再次強轉
容器總結:
array讀快改慢,linked改快讀慢,hash介於二者之間