不会写博客,写点东西练练手,如有不足,还请指教。
话不多说,直奔主题。
Java集合
List
- List 继承至Collection接口,有序,可重复。
List的具体实现包括ArrayList、Vector、LinkedList,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List适用于按数值索引访问元素的情形。
List具体实现小结:
- ArrayList
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高- Vector
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低- LinkedList
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高
Set
- Set 也是继承至Collection接口,无序,唯一。
Set的具体实现包括HashSet和TreeSet,它们也是可变大小集合,但不适合用索引取值。
Set具体实现小结:
- HashSet
底层数据结构是哈希表。(无序,唯一)
如何来保证元素唯一性?
1.依赖两个方法:hashCode()和equals()- LinkedHashSet
底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
1.由链表保证元素有序
2.由哈希表保证元素唯一- TreeSet
底层数据结构是红黑树。(唯一,有序)
1、 如何保证元素排序的呢?
自然排序
比较器排序
2、 如何保证元素唯一性的呢?
根据比较的返回值是否是0来决定
Map
-Map是独立的接口
Map 提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。Map比较重要的实现HashMap、TreeMap和HashTable。
Map实现小结:
- TreeMap是有序的,HashMap和HashTable是无序的。
- Hashtable的方法是同步的,HashMap的方法不是同步的。
- Hashtable是线程安全的,HashMap不是线程安全的。
- Hashtable效率较低,HashMap效率较高。
- Hashtable不允许null值,HashMap允许null值。
主要方法
List方法
- void add(int index, E element)
在指定位置插入元素,后面的元素都往后移一个元素。
- boolean addAll(int index, Collection<? extends E> c)
在指定的位置中插入c集合全部的元素,如果集合发生改变,则返回true,否则返回false。意思就是当插入的集合c没有元素,那么就返回false,如果集合c有元素,插入成功,那么就返回true。
- E get(int index)
返回list集合中指定索引位置的元素
- int indexOf(Object o)
返回list集合中第一次出现o对象的索引位置,如果list集合中没有o对象,那么就返回-1
- ListIterator listIterator()
返回此列表元素的列表迭代器(按适当顺序)具体参考如下。
https://blog.csdn.net/longshengguoji/article/details/41551491
- ListIterator listIterator(int index)
从指定位置开始,返回此列表元素的列表迭代器(按适当顺序)。和上面那个迭代器不同的就是多了一个参数,就是能控制迭代器开始的位置。
- E remove(int index)
删除指定索引的对象。
- E set(int index, E element)
在索引为index位置的元素更改为element元素。
- List subList(int fromIndex, int toIndex)
返回从索引fromIndex到toIndex的元素集合,包左不包右。
以上方法具体可参考如下(有例子):
Java中list集合的常用方法
Set方法
Map方法
- Object put(Object key, Object value)
返回值是被替换的值。
- Object remove(Object key)
删除该Map中key所对应的键值对
- void putAll(Map mapping)
在Map后面追加新的键值对,如果Map中已包含新Map中的key则将key所对应的value用新value覆盖
- void clear()
清空Map中的键值对,使其为空
- Object get(Object key)
根据key获取对应value
- boolean containsKey(Object key)
判断该Map中是否包含指定key,包含则返回true,否则返回false
- boolean containsValue(Object value)
判断Map中是否包含指定value,包含则返回true,否则返回false
- int size()
返回该Map的大小
- boolean isEmpty()
判断该Map是否为空,如果为空则返回true,否则返回false。
本文参考和引用:
Java集合中List,Set以及Map等集合体系详解(史上最全)
Java的Collection集合的常用方法
《JAVA全栈工程师》面试题库 - JAVA全栈工程师
如有不足,请多指教,每周一更,谢谢大家支持!!!