在事件的开发中,需要将使用的对象存储于特定的数据结构的容器中。JDK提供集合框架Collection和map
l 接口Collection包括两个子接口:接口List和接口Set
l
List接口包括两个实现类:ArrayList,LinkedList类
l
Set接口包括两个实现类:HashSet,TreeSet类
map接口包括两个实现类:HashMap和TreeMap类
4.1 Collection接口的常用方法
l
int size(); 返回包含对象的个数
l
boolean isEmpty(); 返回是否会空
l
void clear() ;清空集合
l
boolean add(E e);向集合添加对象
l
boolean remove(Object o):从集合中删除对象
l
boolean addAll(Collection<? extends E> c):将另一个集合的所有元素添加集合中
l
Boolean removeAll(Collection<?> c);删除集合中和另外一个集合相同的全部元素
l
Iterator<E> iterator(); 返回集合的迭代器
4.2 ArrayList和LinkedList
List接口是Collection的子接口,用于定义线性表数据结构;List接口的两个常见实现类为ArrayList和LinkedList分别用动态数组和链表的方式实现List接口。可以认为ArrayList和LinedList的方法逻辑上完全一样,但是性能有一定的差别。ArrayList适合于随机的访问,而LinkedList更适合于插入和删除;
ArrayList用动态数组实现List,可以通过下标迅速的索引到对应的元素,但是元素的插入删除时需要移动较多元素
ListedList用链表实现List,在删除或者插入时,只需要改变链接”指针“既可以实现;
4.3 List的常用方法
4.3.1 List继承Collection类的方法
List接口的实现类实现了Collection定义的方法
List list=new ArrayList();
//add方法将对象的引用添加到集合中
list.add(“one”);
//List的实现类重写了toString方法,一次调用包含对象的toString方法
list.toString();
//size方法返回当前集合存放对象的数量
list.size();
//clear方法清空集合
list.clear();
list.isEmpty();
//List实现类实现的contains方法用于判断集合中是否包含某一个对象。具体的逻辑是:依次调用集合所包含的对象的equals方法与待判断对象比较;因此集合对象,需要妥善的重写equals方法。
list.contains(p)
//remove方法同样和对象的equals方法相关。
list.remove(p);
//addAll方法将另外一个集体的元素全部添加进来
list1.addAll(list2)
//removeAll 删除所有与另外一个集合相同的元素
list1.removeAll(list2)
//retainAll保留与另外一个集合相同的元素,取交集。
toArray方法,将集合中的对象以对象数组的方式返回。例如
String[] arry=(String[])list.toArray(new String[]{})
4.3.2 List类定义的方法
List类根据线性表的特点定义了一系列的方法。
get方法根据下标获取相应的元素,例如list.get(i).toString();
set方法根据下标参数,将改元素设置的指定的元素并且可以返回改下标原始的数据。
Object obj=list.set(2,”三”)
利用此特性,可以实现第i元素和第j元素的互换
list.set(j,list.set(i,list.get(j)))
List对象重载了带下标的add的方法,改方法的作用为插入,插入到原有的list线性表中,根据下标的位置,在下标原有数据前插入,即下标对应的元素之后的所有元素往后移动存储。
List对象重写了带下标的remove方法,remove之后,下标+1之后的全部元素向前移动存储,返回更改之后的新的List对象
Object obj=list.remove(1);
用于检索对象,List提供了indexOf,lastIndexOf方法,也是调用了对象的equals方法。
4.3.3 List迭代器
所有Collection的实现类都实现了iterator迭代器方法,改方法返回一个Iterator接口类型的对象。Iterator定义了三个方法:
Boolean hasNext();判断指针后面是否有元素
E next();指针后移,返回当前的元素
void remove(); 在原集合中删除刚刚返回的元素
对应List集合而言,可以通过基于下标的get方法进行遍历;而iterator方法时针对Collection接口设计,所有实现了Collection接口的类都可以使用Iterator实现迭代遍历
常用的设计模式为:
List list=new ArrayList();
Iterator it=list.iterator();
while(it.hasNext()){
Object obj=it.next();
if(“#”.equals(obj)) it.remove();
}
************************************************************************ ****原文:blog.csdn.net/clark_xu 徐长亮的专栏 ************************************************************************