Java容器类

这篇文章看起来有些弱智,奈何zz阿里面试官就是喜欢考,一怒之下就背了一把

1.Java容器类有哪些?

Java的容器主要有两种,一种是Collection及其子类,一种是Map及其子类。其中Collection十分复杂,其本身还有好多子类接口。如下
1.Collection

是独立元素的序列,包含三个主要子接口

  1. List 有序
  2. Set 无序去重
  3. 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 条评论

发表评论

电子邮件地址不会被公开。