大数据平台 Apache 学生排队 Opencv knockoutjs graphics directory arduino NEJ vue原理 angular视频 linux 获取系统时间 不用u盘装双系统 wps文件修复工具下载 jquery validate mysql连接 网页设计公司 python输出函数 python3删除文件 python高级教程 python类和对象 java例子 java课程学习 java语言编程 linux系统教程 linux目录 linux如何安装 win7loader hadoop权威指南 摩斯密码翻译 alphacam ps选择反向快捷键 php取整函数 免费书籍 dota改键工具 bz2解压命令 微信小程序源代码 ps出血 子节点 c语言幂函数
当前位置: 首页 > 学习教程  > 编程语言

备战BAT面试:查漏补缺——容器

2020/7/24 9:28:58 文章标签:

备战BAT面试的学习记录,整理了最近自己查漏补缺的知识点,总结出来和大家分享,如有错误,欢迎指出!

备战BAT面试


容器

容器是我们保存对象的一种手段

说道保存对象,其实最简单的是数组,但是数组具有固定的尺寸。而通常来说,程序总是在运行时根据条件来创建对象,我们无法预知将要创建对象的个数以及类型,所以Java推出了容器类来解决这一问题。

两种不同概念的容器

  1. Collection,独立元素序列,这些元素都服从一条或多条规则。Collection包括List,Set以及Queue。
    -List必须按照顺序保存元素
    -Set不能有重复元素
    -Queue需要按照排队规则来确定对象的顺序。
  2. Map是键值对类型,允许用户通过键来查找对象。Hash表允许我们使用另一个对象来查找某个对象。

Collection代表的是单个元素对象的序列,(可以有序/无序,可重复/不可重复 等,具体依据具体的子接口Set,List,Queue等);Map代表的是“键值对”对象的集合(同样可以有序/无序 等依据具体实现)

注:这两个接口都不能直接被实现(意思就是不能直接继承Collection类,只能继承Collection的子接口,Map同理)。

Collection和Map的更多细节

Collection

  • 为什么要有集合?直接用数组不香吗?
    数组定长,无法像集合一样动态扩展;
    集合在增加、删除、修改操作上占有优势;

  • List

    • 特点:特点是有索引有序可重复
    • 常用方法:add();get();ListIterator();remove();set()
    • ArrayList类:数组实现,因为可以直接通过数组下标访问指定位置,所以查询和赋值操作速度快。但是修改元素效率低,线程不安全。
    • LinkedList类:双向链表的实现,可以高效操作元素因为可以直接通过修改Node节点中分变量,查询速度慢,操作不安全。
    • Vector:线程安全,效率低下
  • Set

    • 无序不可重复。

值得注意的是,无序是指按照哈希值来存的所以取数据也是按照哈希值取得,所以无序只是单纯表示不按照输入顺序,实际上是某种意义上的有序。不可重复的实现是经过对比对象的hashCode,如果对象的hashCode值不同那对象绝对不同。如果对象的hashCode值相同则用equals进行比较

Map

Map也是一个接口,一个map不能包含重复的key,每个key只能映射唯一一个value。

  • 常用方法:put();remove();clear();get();isEmpty();containsKey();containsValue()
  • HashMAP
    底层是哈希表数据结构,线程是不同步的,可以存入null键,null值。
  • LinkedHashMap
    该子类基于哈希表又融入了链表。
  • TreeMap
    底层是二叉树数据结构。可以对map集合中的键进行排序。需要使用Comparable或者Comparator 进行比较排序。

HashMap与HashSet的比较

HashSet实际是由HashMap实现的。然而我们只能向HashSet中添加Key,原因在于HashSet的Value其实都是同一个对象,这是HashSet添加元素的方法,可以看到辅助实现HashSet的map中的value其实都是Object类的同一个对象。

HashMap HashSet
实现Map接口 实现Set接口
储存键值对 仅存储对象
put()添加 add()添加
直接使用Key来计算HashCode 使用成员对象来计算,先比hashcode再用equals()
较快 较慢

本文链接: http://www.dtmao.cc/news_show_50082.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?