【javaSE】Collection框架及List集合

************************************************************************
  ****原文:blog.csdn.net/clark_xu 徐长亮的专栏
************************************************************************

在事件的开发中,需要将使用的对象存储于特定的数据结构的容器中。JDK提供集合框架Collectionmap

l  接口Collection包括两个子接口:接口List和接口Set

l  List接口包括两个实现类:ArrayList,LinkedList

l  Set接口包括两个实现类:HashSet,TreeSet

map接口包括两个实现类:HashMapTreeMap

4.1 Collection接口的常用方法

l  int size(); 返回包含对象的个数

l  boolean isEmpty(); 返回是否会空

l  void clear() ;清空集合

l  boolean add(E e);向集合添加对象

l  boolean remove(Object o):从集合中删除对象

l  boolean addAllCollection<? extends E> c):将另一个集合的所有元素添加集合中

l  Boolean removeAll(Collection<?> c);删除集合中和另外一个集合相同的全部元素

l  Iterator<E> iterator(); 返回集合的迭代器

4.2 ArrayListLinkedList

List接口是Collection的子接口,用于定义线性表数据结构;List接口的两个常见实现类为ArrayListLinkedList分别用动态数组和链表的方式实现List接口。可以认为ArrayListLinedList的方法逻辑上完全一样,但是性能有一定的差别。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 徐长亮的专栏
************************************************************************

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。