JAVA集合基础
集合与数组及字符串缓冲区的区别:字符串缓冲区的内存中只能存储字符串
数组和集合的区别:
1)长度区别:
数组长度固定
集合长度可变
2)内容的区别
数组可以存储同一种类型的元素
集合可以存储多种类型的元素
3)存储类型的区别
数组:可以存储基本类型,也可以存储引用类型
集合:只能存储引用类型
List、set、map的区别是什么
Collection集合有两个子集合List和set
HashMap和Hashtable都是Map接口的典型实现类
List:
- list集合中的数据能重复(重复输出)
- 有顺序(存进去和取出来的顺序一样)
- 有索引
Set:
- set集合中的数据不能重复(重复不输出)
- 没有顺序(存进去和取出来的顺序不一样)
- 没有索引
Map:(容器类)以键值对的形式存放数据
- map中key值不能重复,重复时数据会进行覆盖
- Map中数据是无序的
- 没有索引
ArrayList和LinkedList有什么区别?
ArrayList和LinkedList都实现了List接口,他们有以下的不同点:
ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。
相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,查找时速度慢。因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。
LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。
HashMap和Hashtable有什么区别?
HashMap和Hashtable都是实现了Map接口,因此很多特性非常相似。但是,他们有以下不同点:
HashMap允许键和值是null,而Hashtable不允许键或者值是null。
Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。
HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。
一般认为Hashtable是一个遗留的类。