Java 最常见的 200+ 面试题及答案:集合
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 最常见的 200+ 面试题及答案:集合,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4306字,纯文字阅读大概需要7分钟。
内容图文
![Java 最常见的 200+ 面试题及答案:集合](/upload/InfoBanner/zyjiaocheng/605/a6c13bc8141b4f6491d7968d9202309b.jpg)
文章面试题整理出自:https://blog.csdn.net/sufu1065/article/details/88051083
18.java 容器都有哪些?
Collection接口
List接口
ArrayList类
LinkList类
vector类
Set接口
HashSet类
TreeSet类
LindedHashSet类
Map接口
hashMap类
TreeMap类
19.Collection 和 Collections 有什么区别?
Collection集合接口,List、set接口的父接口
Collections包装类(工具类)里面好多都是静态方法。
20.List、Set、Map 之间的区别是什么?
List:有序可一重复,(按照插入的顺序)可以存入null
Set:无序不重复,(TreeSet可以解决重复)
Map:键值对的方式存取数据
21.HashMap 和 Hashtable 有什么区别?
线程安全方面:Hashtable线程安全,hashMap非线程安全。
存null:hashMap可以存null键和值,hashtable不能
效率方面:HashMap效率比Hashtable要高
*容量方面:hashMap :默认容量为16*0.75。扩容机制是2倍。
HashTable:默认容量为:11*0.75。扩容机制是:2倍+1
继承的接口不同:HashMap 继承 abstractMap
Hashtable继承 Dictionary
22.如何决定使用 HashMap 还是 TreeMap?
HashMap:插入删除定位元素,比较适合
TreeMap:集合有序的时使用
*23.说一下 HashMap 的实现原理?
是由hash算法来实现的,数据结构是:jdk1.7:数组+链表;jdk:数组+链表+红黑树。链表长度阈值达到8时,变为红黑树。我们通过put(key,value)存储,使用get(key)获取值。传入key的值,获取key.hashcode()计算出hash值。当计算出hash值相同时,我们称为hash冲突。
24.说一下 HashSet 的实现原理?
hashSet底层是由hashmap实现。hashset不允许重复。
25.ArrayList 和 LinkedList 的区别是什么?
结构上:数组 链表
增删查上:arraylist 查询快,删除插入相对慢。LinkedList删除插入比较快。查询相对慢了点。
26.如何实现数组和 List 之间的转换?
数组转List:Arrays. asList()
Lsit转数组: List.toArray()
27.ArrayList 和 Vector 的区别是什么?
相同点:都是数组结构,
线程安全方面:arrayList不是线程安全,Vector是线程安全的。
默认容量:Array默认容量为10,扩容机制是0.5倍,vector默认容量为10扩容机制是1倍。
arrayLsit更节约内存空间,不考虑并发时,优先使用ArrayList
效率:ArrayList效率要高于vector
28.Array 和 ArrayList 有何区别?
一个是数组,一个是集合
容量:ArrayLsit会自动扩容,指定固定大小。
ArrayList内置的方法比较多
Array可以存基本类型与对象,ArrayList只能存对象。
29.在 Queue 中 poll()和 remove()有什么区别?
queue是一个先进先出的一个容器,
相同点:都是删除第一条数据并返回
不同点:poll如果集合为null时,返回null。
remove()如果集合为空时,抛异常.NoSuchElementException
相同点:
Queue<String> queue = new LinkedList<String>();
queue. offer("string"); // add
queue. offer("string2"); // add
System. out. println(queue. poll());都是删除并返回string
// System. out. println(queue. poll());
System.out.println("-----");
System. out. println(queue. remove());都是删除并返回string2
System. out. println(queue. size());0
不同点:
Queue<String> queue = new LinkedList<String>();
queue. offer("string"); // add
queue. offer("string2"); // add
System. out. println(queue. poll());删除并返回string
System. out. println(queue. poll());删除并返回string2
System.out.println("-----");
System. out. println(queue. remove());抛异常:NoSuchElementException
System. out. println(queue. size());
30.哪些集合类是线程安全的?
vector、HashTable、Stack
31.迭代器 Iterator 是什么?
迭代器是一种设计模式,是用来遍历集合的对象。
迭代器类与集合类都是成对增加的。
32.Iterator 怎么使用?有什么特点?
集合引用.iterator;获取一个对象
特点:中有不少方法例如:next()获取下一个元素、hasnext()集合中是否还有下一个元素、remove)()删除元素
33.Iterator 和 ListIterator 有什么区别?
Iterator 是 ListIterator 父类
相同点:都可以遍历集合,都是集合中提供的方法。
不同点:Listlterator只能遍历List集合,而lterator可以遍历任意集合
在lierator遍历中不能进行添加元素,在lterator中就没有提供add()这个方法。而在Listlterator中可以进行添加,里面还提供了不少方法。也可以实现对对象的修改(set())
也提供了逆向遍历的方法hasprevious和previous方法
https://blog.csdn.net/weixin_39017359/article/details/89293748
34.怎么确保一个集合不能被修改?
https://www.pianshen.com/article/1909928717/
collections.unmodifiableMap(map)
Collections.unmodifiableList(List)
Collections.unmodifiableSet(Set)
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("");
List<String> list1 = Collections.unmodifiableList(list);
list1.add("22");
System.out.println(list);
输出:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableList.add(Collections.java:1314)
at com.song.Myreverse.main(MyPublic.java:52)
内容总结
以上是互联网集市为您收集整理的Java 最常见的 200+ 面试题及答案:集合全部内容,希望文章能够帮你解决Java 最常见的 200+ 面试题及答案:集合所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。