1.容器产生背景
程序总是根据运行时才知道的某些条件去创建新对象,在此之前,不知道所需对象数量和类型
未解决这个普遍问题,需要在任意时刻和任意位置创建任意数量的对象,这就不能依靠命名的引用来持有每一个对象
因为你不知道实际上需要多少这样的引用
2.容器类型
Collection:存放元素
List---有序
ArrayList:查询快
LinkedList:增删快
Set----无序,无重复元素
HashSet:查询快
TreeSet:按照比较结果的升序保存对象
LinkedHashSet:按照被添加的顺序保存对象
Queue---一端插入,另一端移出
Map:存放键值对(键唯一)
HashMap:查找最快,无序
TreeMap:按照比较结果的升序保存键
LinkedHashMap:按照插入顺序保存键,同时保留HashMap的查询速度
3.泛型
标识容器中对象的类型,例如:ArrayList<User>
通过使用泛型,可以在编译器防止将错误类型的对象放置到容器中
4.迭代器
迭代器:接受一个容器对象,并传递它,在每个对象上都执行操作
迭代器是一个对象,轻量级,创建它的代价小
List<Pet> pets = Pets.arrayList(12);
Iterator<Pet> it = pets.iterator(); //定义迭代器对象:Iterator<Pet> it = pets.iterator();
while(it.hasNext()){ //判断是否有下一个:it.hasNext()
Pet p = it.next(); //下一个元素:Pet p = it.next();
}
5.数组:根据数字保存对象,也可以是基本类型的数据,数组一旦生成,其容量就不可变