1、List接口的特点
元素是有序的,元素可以重复,因为该集合体系有索引。
2、List接口的特有功能
a、添加功能
void add( int index,Object obj);//向集合指定位置添加元素
b、删除功能
Object remove( int index );//删除集合中指定所引出的元素,返回被删除的元素值。
c、修改功能
Object set( int index ,Object obj );//用指定的元素替换指定索引位置的值返回被替换的元素值。
d、获取功能
Object get( int index );//获取集合指定索引处的值。
int indexOf( Object obj );//获取指定元素在集合中的第一次出现的索引。
ListIterator listIterator( );//列表迭代器
e、截取功能
List subList( int formIndex, int toIndex);//获取集合从指定位置开始到指定位置结束,返回截取出来的集合。
3、并发修改异常的产生和解决方案
面试题:ConcurrentModificationException:并发修改异常。 * 这是个什么异常,怎么产生的,怎么解决的? * * 怎么产生: * 当我们通过迭代器迭代元素的过程中,又通过集合去添加了元素。这种情况是不允许的。 * 因为迭代器是依赖于集合存在的,如果集合发生改变,迭代器也应该相应的发生改变。 * 而我们目前看到的确实,迭代器没变,集合变了。所以,报出了一个并发修改异常。 * * 注意问题:通过迭代器遍历集合的时候,是不能通过集合去操作(添加,删除)。 * 那么,我们可不可以这样理解呢? * A:全部通过迭代器操作:元素是添加到刚遍历的那个元素后面。 * 通过迭代器迭代的时候,可以通过迭代器对集合进行操作。 代码:// 遍历 ListIterator lit = list.listIterator(); while ( lit.hasNext()) { String s = (String) lit.next(); if ( "hello".equals( s)) { lit.add("IOS"); } } * B:全部通过集合操作:元素是添加到最后的。 * 通过集合普通for遍历的时候,可以通过集合去操作。 代码:// 完全通过集合实现 for ( int x = 0; x < list.size(); x++) { String s = (String) list.get( x); if ( "hello".equals( s)) { list.add("IOS"); } }
|