JavaAndroid开发Android开发

Java 集合框架

2020-05-05  本文已影响0人  Daybreaks

Java 集合框架

ps:写这篇文章主要为了整理一下Java 的类集合框架,如有错误或不全,欢迎纠正

converse

Java集合框架图

图片摘自网络

java 集合框架继承图

补充一下上图:

  1. 继承自Iterator的是ListIterator而不是LinkIterator
  2. 加一个Deque接口继承自Queue


    在这里插入图片描述

集合框架分析

整个Java集合框架其实被分为两部分,Collection和Map,但我们一般也称Map是Collection。从集合框架图我们可以看到,Map指出一个箭头produce指向Collection,这是因为Map的key,value,entry都是Set,而Set是继承自Collection。所以我们一般也说Map是Collection,Colleciton是java集合框架的顶层类。

1.Interator 迭代器

迭代器(iterator)有时又称游标(cursor)是程序设计的软件设计模式,可在容器(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器的内容。源自百度百科

迭代器顾名思义,用来迭代集合,Colleciton是Java集合框架的顶层接口,而Collection实现了iterator,也就意味着所有继承自Colleciton的子类也就具有了迭代的能力。

public interface Iterable<T> {
    
    Iterator<T> iterator();
    //还有两个default接口
    ...
    ...
}

这个接口定义了一个iterator方法,每一个Collection必须返回自己实现的迭代器。
我们看一下迭代器的实现:

public interface Iterator<E> {
   
    boolean hasNext();

    E next();

    default void remove() {
        throw new UnsupportedOperationException("remove");
    }

    default void forEachRemaining(Consumer<? super E> action) {
        Objects.requireNonNull(action);
        while (hasNext())
            action.accept(next());
    }
}

主要的两个方法:next、hasNext。根据每一个集合的特性方法的内部实现有所不同,但提供给外部的功能都一样,分别是判断迭代的下一个位置是否有元素、返回当前元素然后迭代的当前位置+1,以ArrayList为例:

        ArrayList<String> arrayList = new ArrayList<>();
        //Iterator接口中定义的方法,这个额迭代器的具体实现在ArrayList中以内部类的形式存在
        Iterator<String> iterator = arrayList.iterator();

        while (iterator.hasNext()) {
            String temp = iterator.next();
            System.out.println(temp);
        }
2.集合工具类

类中有很多静态方法,用来操作数组和集合,很多方法很实用,比如

3.List

特性:

常用的有如ArrayList、LinkedList都直接或间接实现了List。

4.Set

特性:

4.Queue、Deque

Queue代表着单向队列,先进先出,从队尾入队,队头出队,两个操作对应接口中的两个方法:

public interface Queue<E> extends Collection<E> {
  

    //插入队尾
    boolean offer(E e)
    //得到队头元素并移除
    E poll();
    //得到对头元素不移除
    E peek();
}

Deque代表双向队列:扩展了Queue。可以通过Deque实现Stack:后进先出,队尾入队,队尾出队,对应的两个方法:

public interface Deque<E> extends Queue<E> {
    //push 元素 入栈
    void push(E e);

    //pop  元素 出栈
    E pop();


Map

是一种从Key到Value的映射的数据结构:

        HashMap<Integer, String> hashMap = new HashMap<>();
        hashMap.put(1,"数字1");
        hashMap.put(10,"数字10");
        String result = hashMap.get(10);

可以通过Key得到相应的Value。
其中Map有三个方法

分别返回Map中存储的键值对的Key集合、Value集合、存储键值对的Entry的类集合。这也就是为什么说虽然Map不继承自Collection,但通常也说Map是Java集合框架中的一员。

上一篇下一篇

猜你喜欢

热点阅读