zoukankan      html  css  js  c++  java
  • Java 容器

    在实际问题中我们经常需要处理数据,单纯依靠数组来存储数据对开发来说非常困难,java提供了一套容器来方便我们编程。对java容器有一个整体的了解对我们来说非常重要,这样在需要特定容器时,不会手忙脚乱,本文主要介绍java的一些基本容器,而不要仅知道使用ArrayList。下面的图片是java中的简单容器分类

    下载  --图片来自网络

    java定义了四种容器类型,List、Set、Queue和Map。

    其中List、Set、Queue都实现了Collection接口,下面来看看这4中类型的容器。

    Collection

    下面是Collection所拥有的操作,通过函数名都能大致明白它的意义,这里就不做介绍。

    int size();
    boolean isEmpty();
    boolean contains(Object o);
    Iterator<E> iterator();
    Object[] toArray();
    <T> T[] toArray(T[] a);
    boolean add(E e);
    boolean remove(Object o);
    boolean containsAll(Collection<?> c);
    boolean addAll(Collection<? extends E> c);
    boolean removeAll(Collection<?> c);
    boolean retainAll(Collection<?> c);
    void clear();
    boolean equals(Object o);
    int hashCode();

     

    List

    提供基于索引的对成员的随机访问,在Collection的基础上,添加了list的特性。实现list接口的容器类型主要有下面两种:

    1. ArrayList基于数组来实现,所有随机访问性能好。
    2. LinkedList是一个双向的链表,LinkedList不仅实现了List接口,还实现了Deque接口。Deque是一个双端队列数据结构,继承了Queue接口。LinkedList这个容器可以同时作为list,同时也可以用来存储队列和栈结构数据。

    Set

    是一种没有重复对象的容器。

    1. HashSet可以用来做高性能集运算的,例如对两个集合求交集、并集、差集等。集合中包含一组不重复出现且无特性顺序的元素。底层实现使用了一个hashmap。
    2. TreeSet是依靠TreeMap来实现的。TreeSet是一个有序集合,TreeSet中的元素将按照升序排列,缺省是按照自然排序进行排列,意味着TreeSet中的元素要实现Comparable接口。
    3. LinkedHashSet

    Map

    1. HashMap用来存储键值的数据结构,键和值都可以为null。HashMap采用数组结合链表来实现,链表可以解决hash冲突问题。另外需要注意HashMap与HashTable的区别,他们两的实现方式是完全不同的,HashTable是线程安全的,使用了自身对象锁。
    2. TreeMap和HashMap用法大致相同,但TreeMap按自然顺序或自定义顺序遍历键(key)。
    3. LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。
    4. ConcurrentHashMap并非直接继承map,提供并发的检索和更新操作,功能规范和hashtable一样,不允许空键、空值。ConcurrentHashMap使用了显式锁Lock,锁的粒度更细。

    Collections和Arrays是两个工具类,提供了很多静态的方法,用来处理集合对象和数组对象。

  • 相关阅读:
    异常处理与调试2
    异常处理与调试
    异常处理与调试
    身份证校验程序(下)- 零基础入门学习Delphi49
    身份证校验程序(下)- 零基础入门学习Delphi49
    身份证校验程序(上)- 零基础入门学习Delphi48
    身份证校验程序(上)- 零基础入门学习Delphi48
    python -- 面向对象三大特性
    python -- 面向对象初识
    python成长之路八 -- 内置函数
  • 原文地址:https://www.cnblogs.com/pzhblog/p/4604926.html
Copyright © 2011-2022 走看看