• Java List详解,面试中应该如何解答关于List的问题


    对于面试,我们在介绍Java的List的时候,一般需要介绍到,什么是List?List包括什么?各自在用法上有什么区别,在存储上有什么区别?List需要注意什么?把这些问题串起来,我们可以这样介绍:

    关于我对Java的List的介绍:(什么是List?)Java的List是一个接口,继承自Collections接口,不能直接进行对象的创建,(List包括什么?)它的具体实现类常见的有ArrayList和LinkedList,分别是数组和链表这两种数据结构的实现,这的链表是一个双向链表,LinkIterator可以进行双向遍历。我们可以方便的将任何数据类型(类的对象)放在List这样的容器里面,当然,需要保证所有的数据都具有同样的数据类型或者是同一个类的对象。(各自在用法和存储上有什么区别?)对于ArrayList和LinkedList的使用区别主要体现在数组和链表的数据结构用法区别上,前者在内存中是连续存储的,所以随机访问速度很快,遍历和查找会比较方便;而后者是一个接一个连起来的,在内存中的分布是非连续的,由于链表的特殊结构,它对链表中间的数据进行修改,插入和删除等操作都很快,也比较方便。当然这里指的是中间的数据,如果我们需要对List的尾元素进行频繁删除和插入操作,还是ArrayList的效率比较高的。两种List对于内存的扩展方式也是不同的,ArrayList可以进行初始化Capacity的配置,在之后如果数据长度超过了当前的capacity,ArrayList会再分配当前的capacity/2的容量,以此类推;当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。当然,ArrayList也是可以自定义如何进行内存的扩展的(方法改为了private,现在不行了),由于内存扩展时需要进行复制操作,所以使用的时候如果知道预期的List大小最好自己先指定。LinkedList在内存中是分散的,所以添加元素的时候跟capacity没什么关系。需要注意的是:。。。

    推荐链接:Java List详解

  • 相关阅读:
    第七章 查询数据(待续)
    第六章 MySQL函数(待续)
    第五章 数据类型和运算符(待续)
    Centos 用户登录失败N次后锁定用户禁止登陆
    关于CentOS普通用户无法登录SSH问题
    允许FTP用户登录并禁止Shell登录的方法
    禁止Linux用户登录方法
    syslog-ng 学习心得与配置说明
    记录linux系统用户shell终端操作记录
    通过syslog接收远程日志
  • 原文地址:https://www.cnblogs.com/chen-kh/p/6702684.html
Copyright © 2020-2023  润新知