A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林海东 中级黑马   /  2015-8-6 00:01  /  331 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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");
                }
           }


















0 个回复

您需要登录后才可以回帖 登录 | 加入黑马