知识改变命运技能成就事业!
本讲内容:集合 collection
导入包 import java.util.*;
一、区分集合 collection 的三个概念:
1、colection 集合,用来表示任何一种数据结构(Object)
2、Collection 集合接口,指的是 java.util.Collection接口,是 Set、List 和 Queue 接口的超类接口
3、Collections 集合工具类,指的是 java.util.Collections 类。
下面是一个集合之间的关系图:
从上面图可以看出java集合类主要有以下几种:
List结构的集合类:ArrayList类、LinkedList类、Vector类、Stack类
Map结构的集合类:HashMap类、Hashtable类
Set结构的集合类:HashSet类、TreeSet类
Queue结构的集合类:Queue接口
二、Collection 接口
Collection接口是 Set 、List 和 Queue 接口的父接口,提供了多数集合常用的方法声明,如下:
add(E e) | 将指定对象添加到集合中 |
remove(Object o) | 将指定的对象从集合中移除,移除成功返回true,不成功返回false |
contains(Object o) | 查看该集合中是否包含指定的对象,包含返回true,不包含返回flase |
size() | 返回集合中存放的对象的个数。返回值为int |
clear() | 移除该集合中的所有对象,清空该集合。 |
iterator() | 返回一个包含所有对象的iterator对象,用来循环遍历 |
toArray() | 返回一个包含所有对象的数组,类型是Object |
toArray(T[] t) | 返回一个包含所有对象的指定类型的数组 |
下面举一个把集合转成数组的例子,因为Collection本身是个接口所以用它的实现类ArrayList:
<span style="font-size:18px;">public class Text {
public static void main(String[] args) {
String a = "a", b = "b", c = "c";
Collection<String> list= new ArrayList <String>();
list.add(a);
list.add(b);
list.add(c);
String[] array = list.toArray(new String[1]);
for (String s : array) {
System.out.println(s);
}
}
}</span>
输出 :a b c三、集合有4种基本形式,其中前三种的父接口是Collection
1、List 关注事物的索引列表
2、Set 关注事物的唯一性
3、Queue 关注事物被处理时的顺序
4、Map 关注事物的映射和键值的唯一性
四、介绍比较重要的接口和类
(1)、List接口
List 关心的是索引,允许有相同的元素。与其他集合相比,List特有的就是和索引相关的一些方法:
get(int index) 、 add(int index,Object o) 、 indexOf(Object o) 。
1、ArrayList 可以将它理解成一个可增长的数组,它提供快速迭代和快速随机访问的能力。
2、LinkedList 中的元素之间是双链接的,当需要快速插入和删除时LinkedList成为List中的不二选择。
3、Vector 是ArrayList的线程安全版本,性能比ArrayList要低,现在已经很少使用
(2)、Set接口 Set关心唯一性,它不允许重复。
1、HashSet 当不希望集合中有重复值,并且不关心元素之间的顺序时可以使用此类。
2、LinkedHashset 当不希望集合中有重复值,并且希望按照元素的插入顺序进行迭代遍历时可采用此类。
3、TreeSet 当不希望集合中有重复值,并且希望按照元素的自然顺序进行排序时可以采用此类。(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。)
(3)、Queue接口 Queue用于保存将要执行的任务列表。
1、LinkedList 同样实现了Queue接口,可以实现先进先出的队列。
2、PriorityQueue 用来创建自然排序的优先级队列。
(4)、Map接口
Map关心的是唯一的标识符。他将唯一的键映射到某个元素。当然键和值都是对象。
1、HashMap 当需要键值对表示,又不关心顺序时可采用HashMap。
2、Hashtable 注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。
3、LinkedHashMap 当需要键值对,并且关心插入顺序时可采用它。
4、TreeMap 当需要键值对,并关心元素的自然排序时可采用它。
本讲就到这里,Take your time and enjoy it