zoukankan      html  css  js  c++  java
  • java集合框架

    每每看到java的一些集合的对象和接口总是容易混淆,下面总结一下,方便以后:

    Java的集合可以分为两类,第一类是以数组为代表,这类集合可以描述线性表类型的数据结构,第二类是以Map为代表,这类集合可以描述键值对类型的数据结构。描述第一类数据结构的集合是以Collection为基类,在Collection类里,封装了线性表的插入、删除等基本操作;而数据结构的集合是以Map为基类。两类集合分别通过继承和扩展这两个基类,可以逐渐细化,从而得到诸如堆栈和哈希表之类的数据集合对象。

    这里面还涉及到一个抽象类Dictionary,这个类是老版本(JDk 1.0)里面的了。

    下面列了几个问题,这几个问题搞明白了,java集合也就清楚了:

    1 Collection Collections的区别。
    2 List, Set, Map是否继承自Collection接口。
    3 ArrayListVector的区别。
    4 HashMapHashtable的区别。

    答案:

     

    1,Collection 和 Collections的区别。
      Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
      Collection是个java.util下的接口,它是各种集合结构的父接口。
    2,List, Set, Map是否继承自Collection接口? List,Set是 Map不是
    3,ArrayList和Vector的区别。
      一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
      二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
    4,HashMap和Hashtable的区别
      一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
      二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
      三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

    vector为存储的对象分配一块连续的地址空间,因此对vector中的元素随机访问效率很高。在vecotor中插入或者删除某个元素,需要将现有元素进行复制,移动。如果vector中存储的对象很大,或者构造函数复杂,则在对现有元素进行拷贝时开销较大,因为拷贝对象要调用拷贝构造函数。对于简单的小对象,vector的效率优于list。vector在每次扩张容量的时候,将容量扩展2倍,这样对于小对象来说,效率是很高的。

    list中的对象是离散存储的,随机访问某个元素需要遍历list。在list中插入元素,尤其是在首尾插入元素,效率很高,只需要改变元素的指针。

    综上所述:

    vector适用:对象数量变化少,简单对象,随机访问元素频繁

    list适用:对象数量变化大,对象复杂,插入和删除频繁

     

  • 相关阅读:
    python 项目实例
    flash教程
    flask request
    systemd-unit
    kubernets HA集群手动部署
    zookeeper(1)-简单介绍
    apache与nginx原理
    技术文章整理
    CMS垃圾回收器
    Zookeeper
  • 原文地址:https://www.cnblogs.com/kelin1314/p/1598614.html
Copyright © 2011-2022 走看看