• 集合之List


    List常用的有ArrayList,LinkedList,Vector三兄弟,而且List只能存储引用类型,List里的元素都是有序可重复的,这里的有序指的是按添加元素的顺序存储,不是对集合的排序。

    1.大哥ArraryList:首先它是有序,就是按顺序进行存储的,而且里面的元素可以重复存在

    因为它存储是有序的所以查找的速度很快,get和set都要快于LinedList,因为LinkedList要移动指针。但是插入和删除的速度慢于LinkedList

    测试ArrayList的文章:https://www.cnblogs.com/nnngu/p/8234568.html

    二分查找:https://www.cnblogs.com/nnngu/p/8234568.html

    ArrayList之所以速度快是因为基于数组实现的。

    常用方法:add()用于向ArrayList中添加元素

    remove()删除元素,set()更新元素,get()获得元素,size()获得集合的大小,isEmpty()判断元素是否为空

    indexOf()获得元素第一次出现的下标,lastIndexOf()获取元素最后一次出现的下标,contains()判断是否包含某个元素,返回一个布尔值,

    clear()清空当前集合,toArray()转换为数组,

    可以使用迭代器Iterator来遍历数组:

    2.二哥LinkedList是基于双向链表实现的,它增加和删除的速度要快与ArrayList,因为ArrayList要移动数据

    3.三弟Vector,已经过时了。。。

    Vector是线程安全的,因为它的基本方法如add(),remove(),set()都加了synchronized关键字。

    但是目前都使用Collections.synchornizedList来替代

    它可以使用Enumeration枚举来进行循环显示:

    三弟的儿子Stack继承于Vector,也就是它的儿子

    Stack就是栈,拥有先进先出的特性。
    其中主要用到三个方法:push()入栈,pop()出栈,peek()查看栈顶的元素

     测试ArrayList和LinkedList的性能:

    使用LinkedList从头部增加元素的时间为6ms

    使用ArrayList从头部增加元素的时间为440ms,可见LinkedList添加元素的速度比ArrayList快了10倍左右。

    小练习:移除ArrayList中所有能被3整除的元素.

    常规实现方法,发现去除不完整,因为当你移除第一个9时list的索引也会跟着变动

    所以我们应该从尾部开始循环,

    第二种方法:直接删除元素的值,因为直接传入num,由于num是int类型list会认为num是下标而不是值,所以应该转换为包装类型Integer

  • 相关阅读:
    新手第一次联系oracle的碰到的触发器不能创建的问题
    dubbo注册中心占位符无法解析问题(二)
    dubbo注册中心占位符无法解析问题(一)
    .
    Ubuntu16 安装后配置
    TiDB-----使用 TiUP cluster 在单机上模拟生产环境部署步骤
    TiDB 单机安装(在 Linux OS 上部署本地测试环境)
    WPF查找子控件和父控件方法
    Java基础相关
    C++ namespace浅析
  • 原文地址:https://www.cnblogs.com/javazyh/p/10803998.html
Copyright © 2020-2023  润新知