集合
1.集合和数组之间的区别有:
- 数组的长度是固定的,集合的长度是可变的
- 数组中存储的是同一类型的元素,集合中存储的数据可以是不同类型的,除了泛型限制
- 数组中可以存放基本类型数据或者对象,集合中只能存放对象,基本数据类型会自动装箱
- 数组是由JVM中现有的 类型+[] 组合而成的,除了一个length属性,还有从Object中继承过来的方法 之外,数组对象就调用不到其他属性和方法了
- 集合是由JavaAPI中的java.util包里面所提供的接口和实现类组成的,这里面定义并实现了很多方 法,可以使用集合对象直接调用这些方法,从而操作集合存放的数据
2.集合框架中主要有三个要素组成:
- 接口 整个集合框架的上层结构,都是用接口进行组织的。 接口中定义了集合中必须要有的基本方法。 通过接口还把集合划分成了几种不同的类型,每一种集合都有自己对应的接口。
- 实现类 对于上层使用接口划分好的集合种类,每种集合的接口都会有对应的实现类。 每一种接口的实现类很可能有多个,每个的实现方式也会各有不同。
- 数据结构 每个实现类都实现了接口中所定义的最基本的方法,例如对数据的存储、检索、操作等方法。 但是不同的实现类,它们存储数据的方式不同,也就是使用的数据结构不同。
3.集合按照其存储结构可以分为两大类:
- java.util.Collection 单列集合 基本数据类型对应的包装器类型 list set queue
- java.util.Map 双列集合 key-value
其他的集合接口,都是由这两个接口派生出来的,Collection父接口:Interable
4.Collection是父接口,其中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列 集合对象。 Collection类型集合必须要有的基本的方法:
//向集合中添加元素
boolean add(E e)
//把一个指定集合中的所有数据,添加到当前集合中 1 2 3
一些方法的使用样例:
boolean addAll(Collection c)
//清空集合中所有的元素。
void clear()
//判断当前集合中是否包含给定的对象。
boolean contains(Object o)
//判断当前集合中是否包含给定的集合的所有元素。
boolean containsAll(Collection c)
//判断当前集合是否为空。
boolean isEmpty()
//返回遍历这个集合的迭代器对象
Iterator iterator()
//把给定的对象,在当前集合中删除。
boolean remove(Object o)
//把给定的集合中的所有元素,在当前集合中删除。
boolean removeAll(Collection c)
//判断俩个集合中是否有相同的元素,如果有当前集合只保留相同元素,如果没有当前集合元素清空
boolean retainAll(Collection c)
//返回集合中元素的个数。
int size()
//把集合中的元素,存储到数组中。
Object[] toArray()
//把集合中的元素,存储到数组中,并指定数组的类型
T[] toArray(T[] a)
5.Vector
since 1.0 java集合的开始,实现自动扩容,可变长数组,现在Vector成了Collection的子类,线程安全的集合
6.迭代器
为了能够方便的遍历集合中的每一个元素,API中提供了一个迭代器接口: java.util.Iterator 该接口可以很方便的迭代出集合中的元素。是Collection集合及其子类型集合通用的方式
java.lang.Iterable 接口中,定义了获取迭代器的方法:
public interface Iterable {
Iterator iterator();
}
java.util.Iterator 接口中,主要定义俩个方法:
public interface Iterator {
boolean hasNext(); //返回当前迭代器中是否还有下一个对象
Object next(); //获取迭代器中的下一个对象
}
7.foreach循环
增强for循环 Collection类型及其子类型的集合,还有数组,都可以使用foreach循环进行遍历其中的元素数据
for(变量类型 变量名 :集合){
//操作变量
}
集合&#x