java类集之List


java类集之List_第1张图片
 程序想删除一个A对象,List将会调用该A对象的equals方法依次与结婚元素进行比较,如果该equals方法以某个集合元素为参数时返回true,List将会删除该元素——A重写了equals方法,该方法总是返回true。所以我们每次从List集合中删除A对象,总是删除List集合中的第一个元素。

       List提供了一个listIterator()方法,该方法返回一个ListIterator对象。ListIterator对象增加了向前迭代的功能(Iterator只能向后迭代),而且ListIterator还可以通过add方法向List集合中添加元素(Iterator只能删除元素)。

例子:



java类集之List_第2张图片
 

 

ArrayList和Vector实现类:

         ArrayList和Vector都是基于数组实现的List类,所以ArrayList和Vector类封装了一个动态的、允许再分配的Object[]数组。ArrayList或Vector对象使用initialCapacity会自动增加。如果创建空的ArrayList或Vector集合时,不指定initalCapacity参数,则Object[]数组的默认长度是10.

         ArrayList是非线程安全的,Vecor是线程安全的,所以性能上较ArrayList低。实际上,即使需要保证list集合线程安全,也同样不推荐使用Vector,因为Collections类可以将一个ArrayList变成线程安全的。
         LinkedList也是List的实现类,它是一个基于链表实现的List类,对于顺序访问集合中的元素进行优化,特别是插入删除元素时速度非常快。LinkedList即实现了List接口,也实现了Deque接口,由于实现了Deque接口,因此可以作为栈来使用。

 

固定长度的List:

       在数组的工具类Arrays中,提供了一个asList(Object ……a)方法,该方法可以把一个数组或指定个数的对象转换成一个List集合。这个List集合既不是ArrayList实现类的实例,也不是Vector实现类的实例,而是Arrays的内部类ArrayList实例。

        ArrayList是一个固定长度的List集合,程序只能遍历访问该集合里的元素,不可增加,删除该集合里的元素。

 

 

你可能感兴趣的:(java)