当前位置: 首页 > news >正文

Java容器面试知识点总结

容器

java容器有哪些?

String,数组以及Java.util 下面的集合类
List:存放有序,列表存储,元素可重复 ArrayList LinkedList Vector
Set:无序,元素不可重复 HashSet TreeSet
Map: 无序,元素可重复 HashMap TreeMap LinkedHashMap HashTable

Collection 和 Collections 有什么区别?

Collection 是集合类的一个顶级接口,它提供了对集合对象进行基本操作的通用接口方法。
Collections 是集合类的一个工具类,它提供了一系列得到静态方法,用于对集合中元素进行排序,搜索以及线程的同步等操作。

List,Set,Map 之间的区别是什么?

List : 可以允许重复的对象;可以插入多个null元素;有序,输入顺序就是输出顺序;
Set: 不允许重复对象;无序,且只允许一个null对象;
Map: 存储键值对,只能有唯一得到key,value 可以重复只能有一个null键

HashMap 和 Hashtable 有什么区别?

一,HashMap 可以接受null 键和值,HashTanble 不行
二,HashTable 是线程安全的,通过synchronized 来保证,而HashMap线程不安全
三,HashMap 的迭代器是fail-fast 迭代器,而HashTable的enumerator迭代器不上fail-fast.

如何决定使用HashMap 还是 TreeMap?

HashMap 基于散列表实现,适用于查询频繁的情况。
TreeMap 基于红黑树实现,适用于创建比较多的情况,且TreeMap 存储数据是按照字母表的顺序存储的,如果对顺序有要求也可以选用TreeMap。

说一下HashMap 的实现原理?

数组+链表,初始16 0.75 扩容,数据存在内部Map.Entry 中,其中包含key value hashcod 和 next.

说一下HashSet的实现原理?

HashSet 基于HashMap 实现,默认构造函数是构造一个初始容量为16的HashMap,所有放入HashSet集合的元素实际上由HashMAp De key来保存,而value 则保存了一个PRESENT 的静态Object对象,因为元素都保存在key中,所以才能不重复。

ArrayList 和 LinkedList的区别是什么?

  1. ArrayList 底层基于动态数组,LinkedList基于链表实现,底层是循环双向链表
  2. 对于随机访问get和set,ArrayList 优于LinkedList.
    3.对于新增add和删除remove, LinkedList比较快。

如何实现数组和List之间的转换?

List 转数组:toArray()方法,在方法参数中指定原集合的长度数组即可,数组转为List用List:Arrays的asList()方法。

ArrayList 和 Vector 的区别是什么?

1.Vector 的 方法都是同步的,是线程安全的,ArrayList则不是。
2. 在进行扩容的时候,Vector扩容至原来的一倍,ArrayList增加至原来的0.5倍。

Array和ArrayList有何区别?

  1. Array(数组)可以包含基本数据类型和对象类型,ArrayList只能包含对象类型
  2. ArrayList 可以自动扩容,Array则不行

在!Queue 中 poll() 和 remove() 有什么区别?

queue 中,add方法和offer方法都可以添加元素,而remove和poll都是删除队列的头元素区别:add方法在队列满的情况下抛出异常,而offer方法则返回false。remove方法在队列为空时抛出异常,poll方法将返回null。

哪些集合类是线程安全的?

Vector HashTable ConcurrentHashMap Stack

迭代器 Iterator 是什么?

Iterator 是个接口,它提供了很多对元素进行迭代的方法。迭代器可以在迭代过程中删除底层集合的元素,可以直接调用Iterator的remover()方法来删除。
因为在Collection 接口中定义了获取集合迭代器的方法,所以每个集合都包含包括看可以返回迭代器实现的方法。

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

每个集合都可以用iterator() 方法一个Iterator实例,使用next() 方法获取序列中的下一个元素,使用hasNect() 方法检查序列中是否有元素,使用remove() 方法将迭代器新返回的方法删除,特点:Iterator将集合的遍历和底层的结构分离。

Iterator 和 ListIterator 有什么区别?

ListIterator 是 Iterator 的子接口,用于扩展 Iterator.
在 Iterator 中,我们只能向前移动,无法操纵或者修改集合中的元素.ListIterator 弥补了这种缺
点区别:
1.范围不同,Iterator 适用于所有集合,而 ListIterator 只适用于 List 及其子类
2.ListIterator 有 add 方法可以添加元素,Iterator 则不行.
3.ListIterator 可以实现双向遍历,Iterator 则不行.
4.ListIterator 可以实现对象的修改,Iterator 不行
5.ListIterator 可以获取集合中的所有,Iterator 不行.

怎么确保一个集合不能被修改?

可以使用 Collections 或者 Guava 来快速实现.如 Collections.unmodifiableMap(xxxMap);

希望大家点赞支持一下,小编才有动力继续更新!!!

http://www.lryc.cn/news/34281.html

相关文章:

  • 增长:2023 IT运维发展趋势前瞻
  • 自己定义typescript的类型声明文件xx.d.ts
  • 数据分析方法及名词解释总结_(面试2)
  • 【FLY】Java知识点总结
  • SpringMVC-0307
  • 华为OD机试 - 九宫格按键输入(C 语言解题)【独家】
  • Oracle 11g RAC群集部署
  • 【C++、C++11】列表初始化、右值引用
  • CMU15-445 Project.3总结
  • 002+limou+HTML——(2)HTML文档
  • 红外传感器模块与 Arduino 连接
  • NC xml配置文件不能生产java文件
  • 华为OD机试 - 五键键盘(C 语言解题)【独家】
  • Kubernetes Service简介
  • 【c++类与对象 】
  • 【C++】内联函数auto范围for循环nullptr
  • 运维效率狂飙,都在告警管理上
  • 【每日随笔】中国当前社会阶层 ( 技术无关 | 随便写写 )
  • 【13种css选择器】学css选择器,这一篇就够了
  • 1-1 微服务架构概述
  • uniapp传参
  • 面试官:说说你对 TypeScript 中函数的理解?与 JavaScript 函数的区别?
  • 【测试】HD-G2L-IO评估板测试结果表
  • [2.2.1]进程管理——调度的概念、层次
  • 【JavaScript UI库和框架】上海道宁与Webix为您提供用于跨平台Web应用程序开发的JS框架及UI小部件
  • 【微信小程序】-- WXS 脚本(二十九)
  • 案例19-遇见问题的临时解决方案和最终解决方案
  • 自指(Self-reference)
  • 关于Hanoi塔的实现
  • 原始套接字(Raw Socket)