Java容器类
这篇文章看起来有些弱智,奈何zz阿里面试官就是喜欢考,一怒之下就背了一把
1.Java容器类有哪些?
Java的容器主要有两种,一种是Collection及其子类,一种是Map及其子类。其中Collection十分复杂,其本身还有好多子类接口。如下
1.Collection
是独立元素的序列,包含三个主要子接口
- List 有序
- Set 无序去重
- Queue 有序,可以先进先出
2.Map
是键值对。
2.各种容器类的接口分别是怎样的?
(1). 首先是Collection<E>的接口,共19个方法(其中1.8新增了4个用粗体标出,注意方法名前的default也体现了jdk1.8特征)。Oracle官方文档
- boolean add(E e)
- boolean addAll(Collection <? extends E> c)
- void clear()
- boolean contains(Object o)
- boolean containsAll(Collection<?> c)
- boolean equals(Object o)
- int hashcode()
- boolean isEmpty()
- Iterator<E> iterator()
- default Stream<E>parallelStream()
- boolean remove(Object o)
- boolean removeAll(Collection<?> c)
- default boolean removeIf(Predicate<? super E> filter)
- boolean retainAll(Collection<?> c)
- int size()
- default Spliterator<E> spliterator()
- default Stream<E> stream()
- object[] toArray()
- <T> T[] toArray(T[] a)
(2). List<E>的接口相对于Collection增加了如下方法,共12个(其中三个default方法是jdk1.8新增的)。Oracle官方文档
- void add(int index, E element)
- boolean addAll(int index, Collection<? extends E> c)
- E get(int index)
- int indexOf(Object o)
- int lastIndexOf(Object o)
- ListIterator<E> listIterator()
- ListIterator<E> listIterator(int index)
- default void replaceAll(UnaryOperator<E> operator)
- E set(int index, E element)
- default void sort(Comparator<? super E> c)
- default Spliterator<E> spliterator()
- List<E> subList(int fromIndex, int toIndex)
可以看出,List由于具有有序的特征,相对于Collection类增加的方法几乎全部和下标有关,要么是参数含下标,要么是返回值是下标。说是“几乎”而非全部,是因为还有三个jdk1.8新增的几个方法,并不直接和下标有关。
(3). Set。Set的接口和Collection一致,没有新增任何方法。Oracle官方文档
(4). Queue。相对于Collection增加了如下方法,共5个。Oracle官方文档
- E element()
- boolean offer(E e)
- E peek()
- E poll()
- boolean remove()
可以看出,队列由于具有先进先出的特性,所以相对于Collection增加的方法都和头尾有关。
(5). Map<K,V>的接口共有25个方法,是常见容器类中接口最多的,但其实其中11个方法都是jdk1.8新增的。Oracle官方文档
- void clear()
- default V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
- default V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
- default V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
- boolean containsKey(Objecy key)
- boolean containsValue(Object value)
- Set<Map.Entry<K,V>> entrySet()
- boolean equals(Object o)
- default void forEach(BiConsumer<? super K,? super V> action)
- V get(Object key)
- default V getOrDefault(Object key, V defaultValue)
- int hashCode()
- boolean isEmpty()
- Set<K> keySet()
- default V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
- V put(K key, V value)
- void putAll(Map<? extends K,? extends V> m)
- default V putIfAbsent(K key, V value)
- V remove(Object key)
- default boolean remove(Object key, Object value)
- default V replace(K key, V value)
- default boolean replace(K key, V oldValue, V newValue)
- default void replaceAll(BiFunction<? super K,? super V,? extends V> function)
- int size()
- Collection<V> values()
共有 0 条评论