![](https://i-blog.csdnimg.cn/blog_migrate/df17d281a20b9f8f62ac4ae071706b21.jpeg)
1、数组和集合的区别:
1.数组是大小固定的,一旦创建无法扩容;集合大小不固定,
2.数组的存放的类型只能是一种,集合存放的类型可以不是一种(不加泛型时添加的类型是Object);
3.数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查,都是最快的。
2、数组与集合类之间的转换
- List<Intenger>list=new Arrays.asList{1,2,3,4,5,6};//数组转集合
- Collection接口定义的toArray()方法://集合转数组
注: 使用asList()方法,不可向其中添加元素
使用toArray()方法不可通过向方法中传递元素来增加元素
3、
ArrayList的随查找性能更好
集合类删除的是序号
4、Collection与Collections的区别:
Collection接口是Java集合类的基础,Collections类包含很多的工具方法
5、遍历集合的方法
- for语句
- 加强版for语句
- 使用迭代器:(在)
Collection类接口的iterator()方法:
hasNext()方法,判断是否有元素,有则返回true
next()方法,迭代器游标向后
remove()方法,删除一个元素(接连两次调用会出现异常)
6、
Iterator接口与List
Iterator接口:
后者更为强大:
后者更为强大:
- 序列可以从大到小
- 可以在遍历的过程中增加元素和修改元素
- 可以获得元素的序列
7、
ArrayList相当于线性表,适合快速获得指定位置的元素(增添删除时位置会依次变化,开销很大)
LinkedList相当于链表,适合删除增添元素(指定位置要从头开始,开销很大)
Vector支持同步,适合于需要线程安全的场合,但是效率比ArrayList差
注: 前两个使用更多
8、ArrayList和Vector的区别:
Vector中有些方法是支持同步的,适合于需要线性安全的场合,而ArrayList类没有那样方法。
9、Queue接口:
BlockingQueue表示阻塞队列,线程中应用广泛
Deque表示双端队列,该接口的实现类具有可以由两端进入,两端离开的功能
Deque接口中有很多插入、移除和检查元素的方法
10、Set接口:
Set接口用来包含不含重复元素的集合(模拟数学中的集合概念),该接口要求重写equals()方法和hashcode()方法,用来支持对不同Set实现类内容的比较。
HashSet实现元素的快速保存(并没有保存元素的顺序,更没有元素顺序永久不变)
LinkedHashSet兼有列表和集合两种功能,保存了顺序(所以性能比HashSet稍差)
TreeSet用于将集合中的元素排序(用NavigableSet接口中定义的众多方法实现排序功能)
11、
常用Set接口实现类如HashSet、LinkedHashSet、TreeSet不支持线程同步
(可以通过Collections类提供的线程方法实现同步)
(可以通过Collections类提供的线程方法实现同步)
12、
Map接口中的entrySet()方法和HashTable都可以用于保存键值对
Map接口中的KeySet()方法可以获得全部键所组成的集合
Map接口中的values()方法可以获得全部值所组成的集合