查看“【面试:Java集合】”的源代码
←
【面试:Java集合】
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:面试]] == List == === '''ArrayList'''和'''LinkedList'''的区别?分别用在什么场景? === 同:它们两个都是对 List 接口的实现。 异:它们一个是 Array(动态数组)的数据结构,一个是 Link(链表)的数据结构。 # ArrayList 是数组队列,相当于动态数组;LinkedList 为双向链表结构,也可当作堆栈、队列、双端队列。 # 当随机访问 List 时(get和set操作),ArrayList 效率更高。 #: (因为 LinkedList 是线性的数据存储方式,所以需要移动指针从前往后依次查找) # 当对数据进行增加和删除的操作时(add 和 remove 操作),LinkedList 效率更高。 #: (因为 ArrayList 是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动) # 从利用效率来看,ArrayList 自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用; #: 而 LinkedList 自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。 # ArrayList 主要控件开销在于需要在于 List 列表预留一定空间;而 LinkList 主要控件开销在于需要存储结点信息以及结点指针信息。 场景: * LinkedList,插入删除快,查找修改慢。 适用于频繁增删的场景。 * ArrayList,查找快,插入删除慢。 适用于频繁查找和修改的场景。 === List 如何排序? === 三种方法: # 使用 '''Collections.sort''' 默认正序,可以传第二个参数自定义排序; # 自定义 bean 实现 '''Comparable 接口'''; # 实现 '''Comparator 接口自定义比较器'''; === List 如何去重? === 参见:[[List去重]] 五种方法: # 使用:“LinkedHashSet”; # 使用:“stream”(java8新特性); # 使用:“HashSet”; # 使用:“List.contains”方法; # 使用:双重for循环; == Map == === Collection集合接口和Map接口有什么关系? === 没有直接关系,但是一些子类会有依赖。 Collection 是最基本的集合接口,声明了适用于 JAVA 集合(只包括 Set 和 List)的通用方法。 '''Map 接口并不是 Collection 接口的子接口,但是它仍然被看作是 Collection 框架的一部分'''。 === 你都知道哪些常用的 Map 集合? === HashMap、HashTable、TreeMap、LinkedHashMap
返回至“
【面试:Java集合】
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息