容器
容器API在java.util包内。
Connection:Connection接口定义了存取一组对象的方法,子接口Set和List:
----Set:无序且不可以重复----HashSet类
----List:有序但可以重复----LinkedList/ArrayList类
Map:键值对----HashMap/TreeMap类
容器类对象在调用remove、contains()等方法时,需要比较对象是否相等,这会涉及对象类型的equals()方法和hasCode()方法,对自定义类型,需要重写这两个方法。
注意:相等的对象应具有相等的hash codes。对象当做map的索引/键的时候,使用hasCode()。
注意:容器内只能添加对象,不能是基本数据类型,因为基本数据类型一般存在栈里,栈里的内容随时可能被清空,print容器即调用容器和内部元素的toString()。
Iterator:
所有实现了Connecttion接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。
Iterator对象称作迭代器,用以方便的实现对容器内容元素的遍历操作。(因为不同容器,遍历方法是不同的)
iterator接口有如下方法:hasNext(),next(),remove()。
List:
List接口是Connection的子接口,实现List接口的容器类中的元素是有顺序且可以重复。
List容器中的元素都对应一个整数型的序号记载其在容器的位置,可以根据序号存取容器元素。
List容器类有ArrayList,LinkedList等。
set方法返回被替换的元素对象。
java.util.Connections类(不是Connection接口)提供了一些静态方法实现了基于List容器的一些算法:
sort()低到高排序,shuffle()随机排序,reverse()位置逆序排序,fill()用一个对象重写整个List容器,copy()复制,binarySerach()对于顺序List容器,用折半查找对象
所有可以排序的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法:
public int compareTo(Object obj)
Array读快改慢,Linked改快读慢,Hash两者之间
Map:
实现Map接口的类用来存储键值对。
Map接口的实现类有HashMap和TreeMap等。
Map类中存储的键值对通过键来标识,所以键值不能重复。
Map比较用hashCode来比较。
Map键值都必须为对象,所以基本类型要进行包装。但在java5后支持自动打包解包,Auto-boxing/unboxing,自动将基础类型转换为对象,自动将对象装换为基础类型。自动解包得进行强制类型装换。