Java学习——常用集合小结

Java学习——常用集合小结_第1张图片

注:绿色是类,蓝色是接口

1、迭代器(Iterable)

Iterable是一个接口,被Conllection接口继承,实现该接口可以拥有增强for循环,即遍历,用于迭代遍历元素也叫迭代器。实现Iterable接口的集合类必须提供Iterator()方法,该方法返回Iterator。         

Iterator中的方法:                                                                                                                                                                      ①hasNext();    判断是否存在下一项 

②next();     获取下一项     

③remove();     删除有next()返回的最新项

 

2、集合类Conllection

Conllection是集合类的上级接口,是List、Set、Queue的父类,注意但不是Map的父类。 

Conllection中的常用方法:                                                                                                                                                          ①size();    返回集合的长度   

②isEmpty();    判断集合是否为空 

③contains(Object);    判断集合中是包含某项

④clear();      清除集合中的全部元素,将集合的长度变为0   

⑤add();    向集合中增加某项   

⑥remove(Object);    删除集合中的项

⑦iterator();  迭代集合     

⑧toArray():将集合转换为一个数组,所有集合元素变成相应的数组元素。

3、Set

Set 接口特点:保存元素没有顺序(但是也有一定的规律,就是每次输出来的顺序是一样的)、无下表、不能重复

Set 常用实现类:

①HashSet:特点  速度最快,没有明显顺序,几何元素可以放入一个null

②TreeSet:按照比较结果升序保存对象

③LinkedHashSet:按照添加顺序保存对象

4、List

List 接口特点:可以重复、有下表、可以重复

List 常用实现类:

①ArrayList:查询速度快,但是增加删除比较慢

②LinkedList:增加删除的速度快,但是查询的速度慢

5、Queue

Queue保存一个队列(先进先出)的顺序

①PriorityQueue:(PriorityQueue extends AbstractQueue 而AbstractQueue extends Queue)并不是一个标准队列的实现,因为它的排序并不是按照加入队列的顺序,而是按照元素的大小

②Deque:Deque接口代表一个"双端队列",双端队列可以同时从两端来添加、删除元素,因此Deque的实现类既可以当成队列使用、也可以当成栈使用

 

      2.1 ArrayDeque 是一个基于数组的双端队列,和ArrayList类似,它们的底层都采用一个动态的、可重分配的Object[]数组来存储集合元素,当集合元素超出该数组的容量时,系统会在底层重新分配一个Object[]数组来存储集合元素

     2.2 LinkedList

 

 

 

Java学习——常用集合小结_第2张图片

6、Map

Map  以键值对的形式来存值。键不可以重复,允许插入一个null;值可以重复,允许插入多个null。

map 常用实现类:

①HashMap:访问速度最快,没有顺序

②TreeMap:按照比较结果的升序保存键

③LinkedHashMap:按照插入到顺序保存键,同时访问速度相当于HashMap

7、问题

(1)集合(ArrayList)与数组(Array)的区别?

①ArrayList 集合、动态数组,是Array的版本。

②存储的数据类型:数组只能存储一种类型的数据,而集合可以存储不同类型的数据

③长度:数组长度是固定的,而集合的长度是可变的

(2)集合如何转数组?数组转集合呢?

集合转数组:Arrays.asList(数组);

数组转集合:list。toArray();

(3)Conllection中的remove()方法和Iterator中的remove()方法的区别?

①参数:Conllection 中的remove(Object)代参,而Iterator的remove()不代参。

②性能:Iterator中的remove()方法效率更高。因为Conllection中的remove()方法需要从集合中一个一个的遍历才能找对象才能进行删除;而Iterator中的remove()方法结合next()方法一起使用,找到下一项删除。

③容错:在使用Iterator遍历的时候,Iterator中的remove()不会报错,但是Conllection中的remove()会报错:ConcurrentModificationEception。原因:因为Iterator内部对象个数和原来集合中的对象个数保持一致,所以不报错;而Conllection中二者不一致从而导致报错

(4)对集合进行随机排序?

Collections.shuffle(list);

你可能感兴趣的:(集合框架)