List的相关文章,没有太多想写的,早先的时候有提到过两篇

  • ArrayList VS LinkedList
  • ArrayList扩容原理

除此之外还有一些经常被问到的问题,我从Hollis的知识星期收集一下,用到这里,供一起学习

问题

  1. Java 中 Set 与 List 有什么不同?

相同点:都是继承Collection的接口,都是用来存储一组相同类型的元素
不同点:

  • List有序存储,元素可重复
  • Set无序存储,元素不可重复

注意:Set在插入时是要有一定的方法来判断元素是否重复的,这个方法很重要,决定了set种可以保存那些元素,Java中的HashSet使用的是HashMap来存储,弄明白HashMap原理之后就明白HashSet的原理了。

  • HashMap初探
  • HashMap实现原理
  • HashSet VS TreeSet
  1. 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的初始容量非常小,所以如果可以预估数据量的话,分配一个较大的初始值属于最佳实践,这样可以减少调整大小的开销。

  1. 什么是fail-fast,什么是fail-safe,有什么区别吗?
    fail-fast字面意思,快速失败,也就是当集合类遇到数据问题时时立刻抛出异常,常规的集合类都是如此,在多线程同时操作时会立刻抛出concurrentmodificationexception

fail-safe当集合类在多线程环境下处理的时候,遇到问题时,不会抛出异常,而是继续执行下去。

以上是个人理解。

  • java中fail-fast 和 fail-safe的区别
  1. 通过Array.asList获得的List有何特点,使用时应该注意什么?
    Array.asList获取的列表,使用的是适配器模式,其List是Array内部的实现,内部的数据指向的还是数组,并且不支持插入,删除操作。

解:1. asList 得到的只是一个 Arrays 的内部类,一个原来数组的视图 List,因此如果对它进行增删操作会报错

  1. 用 ArrayList 的构造器可以将其转变成真正的 ArrayList

最后

以上是常问道的关于List相关的问题,一次小小的总结。

常见List面试问题相关推荐

  1. Java常见的面试算法题:实现两个线程交替打印1到100的数

    Java常见的面试算法题:实现两个线程交替打印1到100的数 思路: 这是涉及到多个线程打印的问题,一定会用到锁的(synchronized),故这就是一个多线程打印的典型案例. 代码实现: pack ...

  2. 常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可)

    常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可) 比较典型的题目,如下有: 题目一: 1.启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程 ...

  3. 力扣高频算法php_互联网公司最常见的面试算法题有哪些?

    很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试! 为什么?你在提前准备复习的时候,在网上找了半天相应题目的分析文章,但你看了就是不懂. 你在面试的时候,卡壳了,一时间忘了怎么 ...

  4. SQL点滴26—常见T-SQL面试解析

    SQL点滴26-常见T-SQL面试解析 原文:SQL点滴26-常见T-SQL面试解析 它山之石可以攻玉,这一篇是读别人的博客后写下的,不是原原本本的转载,加入了自己的分析过程和演练.sql语句可以解决 ...

  5. sql基础教程亚马逊_针对Amazon,Apple,Google的常见SQL面试问题

    sql基础教程亚马逊 SQL is used in a wide variety of programming jobs. It's important to be familiar with SQL ...

  6. 互联网公司最常见的面试算法题大集合!

      转载于 新智元   来源:Github 编辑:元子 [导读]LeetCode是一个美国的在线编程网站,收集了各个大厂的笔试面试题,对找工作的毕业生和开发者来说,非常有价值.很多求职者都会在Leet ...

  7. 常见英语面试问答_40个常见的工作面试问答

    常见英语面试问答 Every job interview has some common questions that you should be prepared to answer. Having ...

  8. 常见英语面试问题及答案

    常见英语面试问题及答案 1. How would you describe yourself? Sample excellent response: My background to date has ...

  9. 常见电子面试知识(2/4)

    本篇文章为章节二,上接历史文章<常见电子面试知识(1/4)> 16,列举你知道的P-MOS管型号 AO3415,Si2301DS, Si2305DS, AP4435M, AP9435M 1 ...

  10. [HR面试] 65个最常见的面试问题

    [HR面试] 65个最常见的面试问题 1.请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名.年龄.爱好.工作经验,这些在简历上都有.其实,企业最希望知道的是求职者能否胜任工作, ...

最新文章

  1. Chapter 4 Invitations——4
  2. altium designer PCB板厚度设置
  3. 一个简易的loading加载图
  4. 火蚁机器人_适度偷懒提高整体效率:火蚁工作方式启发机器人群组协作
  5. NYOJ 139 我排第几个?
  6. JAVA虚拟机的重要组成
  7. Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet
  8. VAE【变分自编码器】
  9. 计算机网络故障排查,计算机网络故障诊断和排除方法
  10. 《软件测试》学习目标与计划
  11. iOS 幸运转盘抽奖+粒子动画
  12. python k线斜率计算公式_通达信公式K线斜率+选股指标源码
  13. 轻松理解java前期绑定(静态绑定)与后期绑定(动态绑定) 的区别。
  14. 高登学苑-解密携程4.9分的秘诀学习笔记
  15. Android Studio第九课(学习打卡Day11)
  16. 这可能是最全最好的BLAST教程
  17. C Primer Plus 第2章 课后答案
  18. python编写程序判断今天是今年的第几天_python怎么判断当前日期是今年的第几天...
  19. bug记录--------JSON parse error:Cannot deserialize value of type `com.test.EnumTest` from String
  20. 【Python】Python中字符串格式化实现整数前面自动补0

热门文章

  1. UVa11988-破损的键盘 Broken Keyboard
  2. 解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
  3. Javascript面向对象二
  4. php 未实例化类调用方法的问题
  5. [转载]如何用C#语言构造蜘蛛程序
  6. 大数据_Hbase_面试题0001
  7. k8s核心技术-集群安全机制(RBAC介绍)---K8S_Google工作笔记0039
  8. SpringCloud学习笔记029---在SpringCloud项目中使用Zuul实现基本的网关统一处理
  9. 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
  10. CStdioFile写文件中出现的问题