一、List
ArrayList,LinkedList
特有的函数
<class T> get(int index) | 获取下标为index的元素 |
<class T> set(int index, <class T> element) | 改变某个元素 |
void add(int index, <class T> element) | 在下标为index处插入元素,注意这是list特有的,因为collections中式有set这种数据结构,而set是无序的,可能是非线性的(如TreeSet),所以没有有这种方法 |
int indexOf(Object) | 返回Object的第一个下标,找不到返回-1,类似有lastIndexOf() |
Object clone() | 返回的是Object 类型,一般情况下需要强制类型转换 |
List<T> subList(int firstIndex, int lastIndex) | 返回该列表的一个视图,子字符串 |
void sort(Comparator<T> c) | 列表排序,需给出comparator |
LinkedList特有的函数
void addFirst(<class T> e) | 在链表头添加一个元素 |
void addLast(<class T> e) | 在链表尾部添加一个元素 |
<class T> getFirst() | 取得第一个元素 |
<class T> getLast() | 取得最后一个元素 |
<class T> removeFirst() | 移去开头一个元素 |
<class T> removeLast() | 移去最后一个元素 |
可以用LinkedList很轻易的实现stack 和 queue
class stack{
private LinkedList list = new LinkedList();
public void push(Object v) { list.addFirst(v); }
public Object top() { return list.getFirst(); }
public Object pop() { return list.removeFirst(); }
}
class Queue{
private LinkedList list = new LinkedList();
public void put(Object v) { list.addFirst(v); }
public Object get() { return list.removeLast(); }
public boolean isEmpty() { return list.isEmpty(); }
}
二、Map
C++的map 可见C++ map、unordered_map操作方法
1. HashMap
hashmap的底层原理:哈希数组+链表Java集合之一—HashMap_woshimaxiao1的博客-CSDN博客
c++中 unordered_map底层是由开散列实现的,相当于Java中的HashMap。
2. LinkedHashMap
底层原理:哈希数组+链表+双向链表表示插入顺序
Map 综述(二):彻头彻尾理解 LinkedHashMap_linkedhashmap listorderedmap_书呆子Rico的博客-CSDN博客
3.TreeMap
基于红黑树实现的map
c++中map的底层是由红黑树实现的,相当于Java中的TreeMap。
4. HashMap、TreeMap、LinkedHashMap的函数
V get(K key) | 根据键key返回value |
V put(K key, V value) | 插入一个键值对, 如果key存在的话,相当于修改该key的键值对,并返回旧的value |
void putAll(Map<K, V> m) | 将Map类型的m中的所有元素加入到目标map中 |
void clear() | 清空该map的所有entry |
boolean containsKey(Object key) | 查看map中是否存在包含该key的entry |
boolean containsValue(Object value) | 查看map中是否存在包含该value的entry |
V remove(Object key) | 删除该key对应的entry并返回对应的值value |
boolean remove(Object key, Object value) | 当且仅当当前的键对应的是值value时,才把该entry删除,并返回true,否则返回false |
V replace(K key, V value) | 将<key,old_value>替换成<key, new_value>, 本质上跟put是一样的。 |
boolean isEmpty() | 是否为空 |
int size() | 返回数组的大小 |
Set<K> keySet() | 返回键的Set,因为键是不能重复的,所以用Set来存储 |
Collection<V> values() | 返回值的集合,因为值是有可能重复的,所以返回Collection |
V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) | 找到某个key的entry, 然后将value 和 old_value进行一个运算,该运算有BiFunction实现, 该函数中最后一个V是前面两个V进行运算后得到的结果,即value和old_value运算后的击鼓哦。 V oldValue = get(key); |
三、Set
1. TreeSet
基于Treemap实现
2. HashSet
HashSet 通常是使用 Set 的第一选择
hashset介绍
https://www.jianshu.com/p/f6f514e3def8
hashset是基于hashmap实现的
3. LinkedHashSet
LinkedHashSet是基于LinkedHashMap实现
4. SortedSet (抽象类)
TreeSet 是其唯一的实现,TreeSet是一个有序的集合,基于TreeMap实现,支持两种排序方式:自然排序和定制排序
所以Treeset有以下功能:
Object first() | 返回容器中的第一个元素。 |
Object last() | 返回容器中的最末一个元素 |
SortedSet subSet(fromElement, toElement) | 生成此 Set 的子集,范围 从 fromElement(包含)到 toElement(不包含) |
SortedSet headSet(toElement) | 生成此 Set 的子集,由小于 toElement 的 元素组成 |
SortedSet tailSet(fromElement) | 生成此 Set 的子集,由大于或等于 fromElement 的元素组成 |
Comparator comparator() | 返回当前 Set 使用的 Comparator,或者返回 null,表示以自然方式排序。 |