zoukankan      html  css  js  c++  java
  • java容器简要概述

    java中集合框架的概述

    java集合类主要用于保存对象的。

    常用的集合对象:

    Colletion接口,Collection接口是集合中的顶层容器,表示的是一组对象,它的下面有两个子接口List接口和Set接口。

                 List接口:元素有序,可以重复。

                             ArrayList:底层以数组进行存储元素,存储在ArrayList中的元素是有序的,当容量不足时可以自动扩容。

                             LinkedList:底层以链表进行存储元素,插入和删除效率高。      

                 Set接口:元素无序,不可以重复。

             HashSet:底层是基于散列表实现的,底层的方法基本调用的HashMap中的方法,。

                             TreeSet:方法基本调用了TreeMap中的方法。

    Map接口,以键值对的方式存储对象,不能存在重复的键,每个键也最多只能映射到一个值。

                              HashMap:底层是基于散列表实现的,jdk1.6使用数组和链表来存储元素,jdk1.8做了优化使用了数组,链表和红黑树来实现,当链表长度超过阈值                                         是,就会将链表转换成红黑树,从而减少查找时间。

                              Hashtable:现在基本不使用Hashtable了,在多线程环境下它的效率没有ConcurrentHashMap的效率高

                              TreeMap:底层基于红黑树实现的,能够自动对添加的对象进行排序,这个对象要实现Comparable接口。

              ConcurrentHashMap:jdk1.5引入的并发包中的类。采用多个分段锁,把Map分成多个Segment。

    注意:Collections并不是集合,它是一个操作集合的工具类。与Arrays工具类类似。提供了许多操作集合的方法。

    ArrayList

    对于不需要频繁的查找和删除的操作,可以考虑选用ArrayList来进行存储。ArrayList不是线程同步的,不适于多线程环境下。如果在多线程环境下可以使用

    Collections.synchronizedList(new ArrayList()),来将该列表包装起来。

    LinkedList

    适用于查找和删除操作频繁的情况,不适应需要频繁查找的情况。不是线程同步的。

    ArrayList和LinkedList的区别?

    1.ArrayList是基于数组来实现的,LinkedList是基于链表来实现的。

    2.ArrrayList适合用于频繁的查找操作,LinkedList则适用于频繁的插入和删除操作。(多数据情况下,对于单条数据插入和删除ArrayList效率优于LinkedList)

    HashSet和TreeSet

    TreeSet在进行添加对象时,该对象应该实现内部比较器Comparable接口,否则抛出异常。

    HashMap和Hashtable的区别与联系

    1.Hashtable是线程同步的,Hashtable中的大部分方法都加了synchronized进行同步,HashMap是非线程同步的,不适合用在多线程环境下。

    2.HashMap和Hashtable底层都是基于散列表来实现的。

    3.Hashtable 是允许空的键值对的,Hashtable则不允许。

    4.Hashtable还继承了Dictionary接口.

    5.现在基本上不在使用Hashtable,在多线程环境下可以使用ConcurrentHashMap。

                       

                             

  • 相关阅读:
    Web应用程序使用Hibernate
    Hibernate使用注释
    Hibernate入门程序
    Hibernate体系结构
    Spring MVC文件上传教程
    Spring MVC配置静态资源和资源包教程
    Spring MVC4使用Servlet3 MultiPartConfigElement文件上传实例
    Spring4 MVC文件下载实例
    Spring4 MVC+Hibernate4 Many-to-many连接表+MySQL+Maven实例
    Spring4 MVC+Hibernate4+MySQL+Maven使用注解集成实例
  • 原文地址:https://www.cnblogs.com/coderising/p/5713915.html
Copyright © 2011-2022 走看看