常见List面试问题
List的相关文章,没有太多想写的,早先的时候有提到过两篇
- ArrayList VS LinkedList
- ArrayList扩容原理
除此之外还有一些经常被问到的问题,我从Hollis的知识星期收集一下,用到这里,供一起学习
问题
- Java 中 Set 与 List 有什么不同?
相同点:都是继承Collection的接口,都是用来存储一组相同类型的元素
不同点:
- List有序存储,元素可重复
- Set无序存储,元素不可重复
注意:Set在插入时是要有一定的方法来判断元素是否重复的,这个方法很重要,决定了set种可以保存那些元素,Java中的HashSet使用的是HashMap来存储,弄明白HashMap原理之后就明白HashSet的原理了。
- HashMap初探
- HashMap实现原理
- HashSet VS TreeSet
- Java中的List有几种实现,各有什么不同?
Vector,ArrayList,LinkedList 还差Vector没有说到,Vector实现方式与ArrayList类似,不过在方法上加了Synchronized关键字来保证现场安全。
ArrayList 是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会动态地增长.内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组.
LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList.
当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据和运算量很小,那么对比将失去意义.
Vector 和ArrayList类似,但属于强同步类。如果你的程序本身是线程安全的(thread-safe,没有在多个线程之间共享同一个集合/对象),那么使用ArrayList是更好的选择。
Vector和ArrayList在更多元素添加进来时会请求更大的空间。Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%.
而 LinkedList 还实现了 Queue 接口,该接口比List提供了更多的方法,包括 offer(),peek(),poll()等.
注意: 默认情况下ArrayList的初始容量非常小,所以如果可以预估数据量的话,分配一个较大的初始值属于最佳实践,这样可以减少调整大小的开销。
- 什么是fail-fast,什么是fail-safe,有什么区别吗?
fail-fast字面意思,快速失败,也就是当集合类遇到数据问题时时立刻抛出异常,常规的集合类都是如此,在多线程同时操作时会立刻抛出concurrentmodificationexception
fail-safe当集合类在多线程环境下处理的时候,遇到问题时,不会抛出异常,而是继续执行下去。
以上是个人理解。
- java中fail-fast 和 fail-safe的区别
- 通过Array.asList获得的List有何特点,使用时应该注意什么?
Array.asList获取的列表,使用的是适配器模式,其List是Array内部的实现,内部的数据指向的还是数组,并且不支持插入,删除操作。
解:1. asList 得到的只是一个 Arrays 的内部类,一个原来数组的视图 List,因此如果对它进行增删操作会报错
- 用 ArrayList 的构造器可以将其转变成真正的 ArrayList
最后
以上是常问道的关于List相关的问题,一次小小的总结。
常见List面试问题相关推荐
- Java常见的面试算法题:实现两个线程交替打印1到100的数
Java常见的面试算法题:实现两个线程交替打印1到100的数 思路: 这是涉及到多个线程打印的问题,一定会用到锁的(synchronized),故这就是一个多线程打印的典型案例. 代码实现: pack ...
- 常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可)
常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可) 比较典型的题目,如下有: 题目一: 1.启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程 ...
- 力扣高频算法php_互联网公司最常见的面试算法题有哪些?
很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试! 为什么?你在提前准备复习的时候,在网上找了半天相应题目的分析文章,但你看了就是不懂. 你在面试的时候,卡壳了,一时间忘了怎么 ...
- SQL点滴26—常见T-SQL面试解析
SQL点滴26-常见T-SQL面试解析 原文:SQL点滴26-常见T-SQL面试解析 它山之石可以攻玉,这一篇是读别人的博客后写下的,不是原原本本的转载,加入了自己的分析过程和演练.sql语句可以解决 ...
- sql基础教程亚马逊_针对Amazon,Apple,Google的常见SQL面试问题
sql基础教程亚马逊 SQL is used in a wide variety of programming jobs. It's important to be familiar with SQL ...
- 互联网公司最常见的面试算法题大集合!
转载于 新智元 来源:Github 编辑:元子 [导读]LeetCode是一个美国的在线编程网站,收集了各个大厂的笔试面试题,对找工作的毕业生和开发者来说,非常有价值.很多求职者都会在Leet ...
- 常见英语面试问答_40个常见的工作面试问答
常见英语面试问答 Every job interview has some common questions that you should be prepared to answer. Having ...
- 常见英语面试问题及答案
常见英语面试问题及答案 1. How would you describe yourself? Sample excellent response: My background to date has ...
- 常见电子面试知识(2/4)
本篇文章为章节二,上接历史文章<常见电子面试知识(1/4)> 16,列举你知道的P-MOS管型号 AO3415,Si2301DS, Si2305DS, AP4435M, AP9435M 1 ...
- [HR面试] 65个最常见的面试问题
[HR面试] 65个最常见的面试问题 1.请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名.年龄.爱好.工作经验,这些在简历上都有.其实,企业最希望知道的是求职者能否胜任工作, ...
最新文章
- Chapter 4 Invitations——4
- altium designer PCB板厚度设置
- 一个简易的loading加载图
- 火蚁机器人_适度偷懒提高整体效率:火蚁工作方式启发机器人群组协作
- NYOJ 139 我排第几个?
- JAVA虚拟机的重要组成
- Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet
- VAE【变分自编码器】
- 计算机网络故障排查,计算机网络故障诊断和排除方法
- 《软件测试》学习目标与计划
- iOS 幸运转盘抽奖+粒子动画
- python k线斜率计算公式_通达信公式K线斜率+选股指标源码
- 轻松理解java前期绑定(静态绑定)与后期绑定(动态绑定) 的区别。
- 高登学苑-解密携程4.9分的秘诀学习笔记
- Android Studio第九课(学习打卡Day11)
- 这可能是最全最好的BLAST教程
- C Primer Plus 第2章 课后答案
- python编写程序判断今天是今年的第几天_python怎么判断当前日期是今年的第几天...
- bug记录--------JSON parse error:Cannot deserialize value of type `com.test.EnumTest` from String
- 【Python】Python中字符串格式化实现整数前面自动补0
热门文章
- UVa11988-破损的键盘 Broken Keyboard
- 解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
- Javascript面向对象二
- php 未实例化类调用方法的问题
- [转载]如何用C#语言构造蜘蛛程序
- 大数据_Hbase_面试题0001
- k8s核心技术-集群安全机制(RBAC介绍)---K8S_Google工作笔记0039
- SpringCloud学习笔记029---在SpringCloud项目中使用Zuul实现基本的网关统一处理
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
- CStdioFile写文件中出现的问题