今天我们来学习一下Java集合。我们使用基本数据类型定义的变量只能处理单一的数据,如果需要存储批量数据的话,就需要使用数组。但是数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)。因此,Java就提供了集合类,所有的集合类都位于 java.util包中!Java集合和数组的区别可以分为三点:
第一, 数组长度是固定的,集合的长度可变,也就是说集合可以扩容
第二, 数组即可以存储基本数据类型也可以存储引用数据类型,集合只能存储引用数据类型,集合要想存储基本数据类型的话,必须使用基本数据类型对应的包装类
第三, 数组只能存储单一数据类型,集合可以存储不同引用数据类型
从上面的图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面就是具体实现类,常用的有 ArrayList、LinkedList、HashSet、TreeSet 等等。接口Map下具体实现类中常用的就是HashMap了。
接下来,我们想看看Collection接口定义的一些方法:
- boolean add(E e) :在集合的末尾添加新元素e
- boolean remove(Object o) :删除集合中与元素o的值相等的元素
- void clear() :清除集合中所有元素。
- boolean contains(Object o) :判断集合中是否存在元素o
- boolean isEmpty() :判断集合是否为空
- int size() :返回集合中元素的个数
- boolean addALL(Collection c) :将一个集合c添加到当前集合中
- Object[] toArray() :返回当前集合的数组形式
- Iterator iterator() :返回迭代器,用于循环遍历集合
由于List和Set都继承自Collection接口,因此这两个都包含了上面的9个方法。那么List和Set有什么区别呢?他们的区别有三点,
- List中的元素顺序是按照元素先后插入的顺序来的,而Set内的元素顺序则不是。
- List中可以存储重复元素,而Set则是元素唯一的。
- List是通过索引值来获取元素,类似数组,而Set则不能。
接下来,我们就通过代码示例来说明List和Set的使用和区别。
// ArrayList的使用
List list = new ArrayList();
// 添加基本数据类型对应的包装类
list.add(new Integer(100));
// 添加字符串对象
list.add("abc");
// 通过索引访问List元素
System.out.println("0索引:"+list.get(0));
// 循环遍历List
for(int i=0; i<list.size();i++)
System.out.print(lis