• 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)。

    未完待续;

                       

  • 相关阅读:
    CentOS 7.0关闭默认防火墙启用iptables防火墙
    centos7 启动httpd的时候为什么显示是这样的
    CentOS配置本地yum源/阿里云yum源/163yuan源,并配置yum源的优先级
    Linux如何用yum安装软件或服务
    IE浏览器和Firefox浏览器兼容性问题及解决办法
    Input的size与maxlength属性的区别
    下拉框默认选择数据库取出数据
    登录到 SQL Server 实例
    安装sql server 2008重启失败
    值栈
  • 原文地址:https://www.cnblogs.com/dev1ce/p/10662297.html
Copyright © 2020-2023  润新知