zoukankan      html  css  js  c++  java
  • JAVA 集合随笔

    JAVA中提供了现成操纵数据的集合,使得我们在开发中基本不用自己动手实现复杂的数据结构,来保存和操纵数据。

    所以当我们有了基本的数据结构知识,会合理利用JAVA提供的集合就好啦。

    JDK1.8;(仅列举常见的)

    一:

    Iterable接口:三个方法;

            Iterator<T> iterator();

      default void forEach(Consumer<? super T> action) {  
        Objects.requireNonNull(action);
        for (T t : this) {
          action.accept(t);
        }
      }

      default Spliterator<T> spliterator() {
                  return Spliterators.spliteratorUnknownSize(iterator(), 0);
      }

    Collection接口:主要的三个子接口 List Set Queue。同时继承了Iterable接口。

    Map接口:主要的抽象类 AbstractMapAbstractMap 主要的实现类:HashMapTreeMap;

                      LinkedHashMap继承了HashMap;

                      接口ConcurrentMap 继承了AbstractMap ; ConcurrentHashMap继承了AbstractMap,实现了ConcurrentMap 。          

    Collections:实现一些集合操作的类。

    二:

    List:主要实现ArrayList(数组实现)LinkedList(链表实现)Vector(线程安全:synchronized关键字实现)Stack(继承Vector)

    Set:主要实现HashSet(无序不可重复)TreeSet(红黑树实现)LinkedHashSet

    Queuehttps://www.cnblogs.com/lemon-flm/p/7877898.html ;

    三:

    MapConcurrentHashMap(分段锁);TreeMap(红黑树);HashMap(散列表);Hashtable(synchronized线程安全);Properties(继承Hashtable);

    四:

    List特点:有序,允许存放重复元素,允许存入null。

    ArrayList: 采用数组实现,查询快,删除慢(例:删除数组中间的元素,数组后部的元素全部得往前移动)。

    LinkedList:采用链表实现,是一个双向循环列表,具有prev,next,尾元素的next指向头;头元素的prev指向最后一个元素。删除快(直接断开链接即可),查询慢(需要从头部开始遍历查找。)

    其中LinkedList还实现了Deque接口,所以可以当成一个非阻塞队列使用,满足先进先出,一端进另一端出的队列特点。

    Vector:是采用数组实现的,其中插入,删除,查询等方法全部加上了synchronized关键字,实现线程安全。

    Set特点:无序,不可存放重复元素,允许存入null。

    HashSet:底层是包装一个HashMap实现的。HashSet判断存入的元素是否重复,是通过元素的equals()方法,和hashCode()方法判断的。无序

    LinkedHashSet:就是加了链表的HashSet,可以通过链表维护插入顺序,故可以维持“插入顺序”。

    TreeSet:底层是包装了一个TreeMap实现的。采用红黑树实现,红黑树本身是一个近似平衡的二叉搜索树。

                    且TreeSet  实现了 NavigableSet<E> 接口 ,NavigableSet 继承了 SortedSet<E>,故TreeSet 是一个排序的set。

                    Java 中 实现比较:Comparable接口以及Comparator接口。所以TreeSet有两种判断排序的方式,1:存入元素实现Comparable接口。2.传入实现Comparator接口的比较器。

    Map特点提供了键值的映射,key-value的模式;

    HashMap:散列表实现(详见我的另一篇:https://www.cnblogs.com/dev1ce/p/10627395.html)。

    未完待续;

                       

  • 相关阅读:
    抽象类、接口
    静态联编、动态联编
    多态
    QML、Qt Quick
    重载、多态、继承、封装
    异步消息postEvent更新界面
    联合体union
    使用 Git@OSC 管理代码
    excel数据生成sql insert语句
    excel数据生成sql insert语句
  • 原文地址:https://www.cnblogs.com/dev1ce/p/10662297.html
Copyright © 2011-2022 走看看