Java容器
容器:Java API所提供的一系列实例类,用来在程序中存放对象。
Collection接口是List 和Set接口的父接口,它定义了存储对象的方法,而List和Set分别定义了存储的方式
其中定义的一些方法:
Int size()
Boolean isEmpty()
Void clear()
Boolean contains(Object element)
Boolean add(Object element)
Boolean remove(Object element)
Iterator iterator()
Boolean containsAll(Object element)
Boolean addAll(Object element)
Boolean removeAll(Object element)
Object toArray()
Set接口 : 无顺序且不可重复(没有提供额外的方法,与数学概念中的”集合“相对应)
List接口 :有顺序且可重复
主要方法:
Object get(int index)
Object set(int index, Object ob) //返回被替换的原有元素
Void add(int index, Object ob)
Object remove(int index)
Int indexOf(Objexct ob)
Int lastIndexOf(Object ob)
List常用算法:java.util.Collections提供了一些静态方法实现了一些基于list容器的算法
Void sort(list l) //对list容器内的对象元素排序
Void shuffle(list l) //对list容器内的对象元素随机排列
Void reverse(list l) //对list容器内的对象元素逆序排列
Void copy(list dest, list src) //将src容器复制到dest中
Void binarySearch(list l, Object ob) //利用二分法查找对象元素
Java.util.Collections提供的算法都是基于Java.lang.comparable接口的
所有可以实现上述算法的类都是实现了comparable接口
Comparable接口中只有一个方法
Public int compareTo(Object ob)
This==Object 返回0
This>Object 返回1
This<Object 返回-1
实现了comparable接口的类都是通过实现compareTo方法来实现排序等算法
容器类的对象在使用remove contains方法时,需要比较对象是否相等 这需要调用对象的equals 和 hashcode 方法 ;对于自定义类,需要重写equals 和hashcode 方法,已实现自定义的对象相等的规则(相等的对象应该具有相等的hash code)
Iterator接口:
1. 所有实现了collection接口的类都有一个iterator方法用以返回一个实现了iterator的对象
2. Iterator接口称做遍历器,用以实现对容器中的元素的遍历操作
3. Iterator的方法有:
Boolean hasNext() //游标右边任然有元素,可以迭代
E next() //返回游标右边的下一个元素(返回值是Object类型,需要强制转为自己需要的类型)
Void remove() //从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。每次调用 next 只能调用一次此方法。如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的 collection,则迭代器的行为是不确定的。
***Iterator的remove方法是在迭代过程中删除元素的唯一安全的方法
如何选择数据结构:Array 读快改慢 Linked读慢改快 Hash 介于两者之间
Map接口:定义了存储“键-值映射对“的方法
Map接口的实现类有hashmap和treemap
Map 中存储键值对(key-value)通过键来标识,所以键值不能重复
Map的主要方法:
Object put(Object key, Object values)//替换键对应的值并返回原来的值
Object get(Object key) //返回对应的Value
Object remove(Object key) /
Boolean containsKey(Object key)
Boolean containsValue(Object value)
Int size()
Boolean isEmpty()
Void putAll(Map m)
Void clear()
泛型结合集合使用:在定义集合同时定义集合中元素的类型。也可以在定义Iterator时使用泛型