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