1.ArrayList底層是一個數組數組
2.當初始化ArrayList,數組的長度爲0spa
3.當第一次添加的時候,數組的長度爲10對象
4.之後添加時,若是數組的長度不知足時,進行擴容 ,按1.5來進行擴容排序
5.擴容以後,將原數組中的元素拷貝到新的數組中索引
方法名 | 描述 |
---|---|
void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
E remove(int index) | 刪除指定索引處的元素,返回被刪除的元素 |
E set(int index,E element) | 修改指定索引處的元素,返回被修改的元素 |
E get(int index) | 返回指定索引處的元素 |
方法名 | 說明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 從集合中移除指定的元素 |
boolean removeIf(Object o) | 根據條件進行移除 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判斷集合中是否存在指定的元素 |
boolean isEmpty() | 判斷集合是否爲空 |
int size() | 集合的長度,也就是集合中元素的個數 |
特色:接口
1.存取有序 能夠重複 有索引element
方法名 | 說明 |
---|---|
public void addFirst(E e) | 在該列表開頭插入指定的元素 |
public void addLast(E e) | 將指定的元素追加到此列表的末尾 |
public E getFirst() | 返回此列表中的第一個元素 |
public E getLast() | 返回此列表中的最後一個元素 |
public E removeFirst() | 今後列表中刪除並返回第一個元素 |
public E removeLast() | 今後列表中刪除並返回最後一個元素 |
特色rem
1.不能夠存儲重複元素 存儲順序不一致 沒有索引 底層是hash表get
2.沒有索引,可使用迭代器和加強for進行操做hash
方法名 | 說明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 從集合中移除指定的元素 |
boolean removeIf(Object o) | 根據條件進行移除 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判斷集合中是否存在指定的元素 |
boolean isEmpty() | 判斷集合是否爲空 |
int size() | 集合的長度,也就是集合中元素的個數 |
特色
1.不能存儲重複的元素 沒有索引
2.能夠將元素按照規則進行排序
3.沒有索引,可使用迭代器和加強for進行操做
4.TreeSet的原理是紅黑數,先獲取左邊,再獲取中間,最後獲取右邊
方法名 | 說明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 從集合中移除指定的元素 |
boolean removeIf(Object o) | 根據條件進行移除 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判斷集合中是否存在指定的元素 |
boolean isEmpty() | 判斷集合是否爲空 |
int size() | 集合的長度,也就是集合中元素的個數 |
排序的方式有:
1.天然排序Comparable的使用
使用空參構造建立TreeSet集合
用TreeSet集合存儲自定義對象,無參構造方法使用的是天然排序對元素進行排序的
自定義的Student類實現Comparable接口
天然排序,就是讓元素所屬的類實現Comparable接口,重寫compareTo(T o)方法
重寫接口中的compareTo方法
重寫方法時,必定要注意排序規則必須按照要求的主要條件和次要條件來寫
2.比較器排序Comparator的使用
用TreeSet集合存儲自定義對象,帶參構造方法使用的是比較器排序對元素進行排序的
比較器排序,就是讓集合構造方法接收Comparator的實現類對象,重寫compare(T o1,T o2)方法
重寫方法時,必定要注意排序規則必須按照要求的主要條件和次要條件來寫
Map集合的定義:
Map集合的特色:
鍵不能重複,值能夠重複
鍵與值之間是一一對應的關係
(鍵+值)這個總體咱們稱之爲"鍵值對"或"鍵值對對象",在Java中又叫"Entry對象"
特色:2
HashMap底層是哈希表結構
依賴hashCode方法和equals方法保證鍵的惟一
若是鍵要存儲自定義對象,須要重寫hashCode和equals方法
方法介紹
方法名 | 說明 |
---|---|
V put(K key,V value) | 添加元素 |
V remove(Object key) | 根據鍵刪除鍵值對元素 |
void clear() | 移除全部的鍵值對元素 |
boolean containsKey(Object key) | 判斷集合是否包含指定的鍵 |
boolean containsValue(Object value) | 判斷集合是否包含指定的值 |
boolean isEmpty() | 判斷集合是否爲空 |
int size() | 集合的長度,也就是集合中鍵值對的個數 |
第一種遍歷方式
先把雙列集合轉爲單列集合,再進行遍歷
方法名 | 說明 |
---|---|
Set<K> keySet() | 獲取全部鍵的集合 |
V get(Object key) | 根據鍵獲取值 |
第二種遍歷方式
先把雙列集合轉爲單列集合,再進行遍歷
方法名 | 說明 |
---|---|
Set<Map.Entry<K,V>>entrySet() | 獲取全部鍵值對對象集合 |
K getKey() | 得到鍵值 |
V getValue() | 得到值 |
特色: 能夠排序
TreeMap底層是紅黑樹結構
依賴天然排序或者比較器排序,對鍵進行排序
若是鍵存儲的是自定義對象,須要實現Comparable接口或者在建立TreeMap對象時候給出比較器排序規則
方法和HashMap同樣
第一種遍歷方式
先把雙列集合轉爲單列集合,再進行遍歷
方法名 | 說明 |
---|---|
Set<K> keySet() | 獲取全部鍵的集合 |
V get(Object key) | 根據鍵獲取值 |
第二種遍歷方式
先把雙列集合轉爲單列集合,再進行遍歷
方法名 | 說明 |
---|---|
Set<Map.Entry<K,V>>entrySet() | 獲取全部鍵值對對象集合 |
K getKey() | 得到鍵值 |
V getValue() |