Java面试 容器 面试题

二、容器1、Java容器都有哪些 list:ArrayList,LinkedList,Vector set:hashSet,treeSet map:hashMap,TreeMap2、Collection和Collections有什么区别 Collection是List和Set的实现借口 Collections是集合工具类,里面有很多集合的方法,例如:搜索,排序等3、List、Set、Map之间的区别分别是什么 ...
摘要由CSDN通过智能技术生成

目录

 

二、容器

1、Java容器都有哪些

2、Collection和Collections有什么区别

3、List、Set、Map之间的区别分别是什么

4、HashMap和HashTable之间的区别是什么

5、如何决定使用hashMap还是treeMap

6、HashMap的原理

7、HashSet的原理

8、ArrayList和LinkedList的区别

9、如何实现数组和list之间的转换

10、ArrayList和Vector之间的区别

11、Array和ArrayList的区别

12、Queue中poll() 和 remove() 的区别

13、哪些集合类是线程安全的

14、迭代器Iterator是什么

15、Iterator怎么使用?有什么特点

16、Iterator和listIterator有什么区别

17、怎么确保一个集合不被修改

18、数据结构中什么是数组,什么是链表

19、ArrayList底层实现方式

20、LinkedList底层实现方式

21、ArrayList,LinkedList,Vector存储性能和特性

22、去掉一个Vector集合中重复的元素

23、Set中的元素是不可重复的,是用什么方法来区分的?==还是equals()

24、HashMap的工作原理

25、什么是泛型,怎么使用的,有什么好处

26、什么是foreach循环,可以循环哪些数据类型

27、比较集合和数组的优缺点

28、在List里面怎么去除重复的数

29、HashMap和ArrayList是不是都是线程不安全的

30、ArraysList中加入一万条数据,怎么提高效率

31、双向链表和双向循环链表

32、HashMap的长度为什么是2的次幂方

33、HashMap多线程操作导致死循环问题

34、List,Set,Map底层数据结构

35、如何选用集合

36、什么是数组,什么是链表

37、你所知道的集合类都有哪些,他们的主要方法?

38、HashMap底层实现方式

 



二、容器

1、Java容器都有哪些

       list:ArrayList,LinkedList,Vector

       set:hashSet,treeSet

       map:hashMap,TreeMap

2、Collection和Collections有什么区别

       Collection是List和Set的实现借口

       Collections是集合工具类,里面有很多集合的方法,例如:搜索,排序等

3、List、Set、Map之间的区别分别是什么

       List:有序,可重复

       Set:无序,不可重复

       Map:key-value结构,key不可重复,value可重复

       List和Set继承了Collection接口,Map没有继承

4、HashMap和HashTable之间的区别是什么

       HashMap是非线程安全的,HashTable是线程安全的

       HashMap允许key和value为null,HashTable不允许

5、如何决定使用hashMap还是treeMap

       treeMap是基于红黑树实现的,是有序的

       hashMap是无序的

       对于在map中插入,删除和定位元素这类操作,hashMap是最好的选择,如果你需要对一个有序的key集合进行遍历,TreeMap是更好的选择

6、HashMap的原理

       当我们往hashMap中put元素时,首先根据key的hashCode重新计算hash值,根据hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链表头,最先加入的放入链尾,如果数组中没有该元素,就直接将该元素放到数组的位置上

7、HashSet的原理

       HashSet底层由HashMap实现

       HashSet的值存放在HashMap的key上

       HashMap的value同意为Present

8、ArrayList和LinkedList的区别

       ArrayList的底层数据结构是数组,支持随机访问,查找效率高,增删效率低

       LinkedList的底层数据结构是双向链表,不支持随机访问,增删效率高,查找效率低

9、如何实现数组和list之间的转换

       数组 -> list :数组里的asList()

       list -> 数组 : list里的toArray()

10、ArrayList和Vector之间的区别

       ArraysList 是非线程安全的,容量每次增长为原先的1.5倍

       Vector是线程安全的,容量每次增长为原先的2倍

11、Array和ArrayList的区别

       Array是数组,ArrayList是集合

       Array类型的变量声明的同时必须实例化,ArrayList 可以只先声明

       Array智能存储单类型的结构,ArrayList可以存储异构的对象

12、Queue中poll() 和 remove() 的区别

       Queue 是队列

       相同点:都是返回第一个元素,并在队列中删除返回的对象

       不同点:如果没有返回元素,poll返回null,remove直接返回NoSuchElementException(无接触异常)

13、哪些集合类是线程安全的

       Vector,HashTable,Stack

       Java,util.concurrent包下的所有集合类

              ArrayBlockingQueue、

              ConcurrentHashMap、

              ConcurrentLinkedQueue、

              ConcurrentLinkedDeque

14、迭代器Iterator是什么

       迭代器:Java常用的设计模式之一,用于顺序访问集合对象的元素,无需知道集合对象的底层实现

       Iterator可以遍历集合,为各种容器提供了公共的操作接口,隔离对容器的遍历操作的底层实现,从而解耦

       缺点是增加新的集合类需要对应的增加新的迭代器,迭代器类和集合类成对增加

15、Iterator怎么使用?有什么特点

       在Java的各个容器中,例如:ArraysList,hashSet等,并没有直接实现Iterator这个接口,而是有Iterator() 这个方法

       直接调用,然后获取到 Iterator 这个类的对象,用while(对象.hashNext() ) 去遍历

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值