List.remove()的两个重载方法

Java编程思想20章的一个例子,20.2编写注解处理器,在list<Interger> useCases中移除注解中出现了的id(int):

    public static void trackUseCases(List<Integer> useCases, Class<?> cl) {
        for(Method method : cl.getDeclaredMethods() ) {
            UseCase uc = method.getAnnotation(UseCase.class);
            if( uc!=null ) {
                System.out.println("Found Use Case: " + uc.id() + " " + uc.description());
//  //              useCases.remove(uc.id());     //IndexOutOfBoundsException
                useCases.remove(new Integer(uc.id()));
//或者           useCases.remove(useCases.indexOf(uc.id()));
            }
        }

        for( int i : useCases ) {
            System.out.println("Warning: Missing use case-" + i);
        }
    }

开始就写了第一种方式,结果就抛异常了,看看源码:

List对象重载了两个remove方法,1、remove(int index),    2、 remove(Object o)。

1.

/**
     * Removes the element at the specified position in this list (optional
     * operation).  Shifts any subsequent elements to the left (subtracts one
     * from their indices).  Returns the element that was removed from the
     * list.
     *
     * @param index the index of the element to be removed
     * @return the element previously at the specified position
     * @throws UnsupportedOperationException if the <tt>remove</tt> operation
     *         is not supported by this list
     * @throws IndexOutOfBoundsException if the index is out of range
     *         (<tt>index < 0 || index >= size()</tt>)
     */
    E remove(int index);
2.
/**
     * Removes the first occurrence of the specified element from this list,
     * if it is present (optional operation).  If this list does not contain
     * the element, it is unchanged.  More formally, removes the element with
     * the lowest index <tt>i</tt> such that
     * <tt>(o==null ? get(i)==null : o.equals(get(i)))</tt>
     * (if such an element exists).  Returns <tt>true</tt> if this list
     * contained the specified element (or equivalently, if this list changed
     * as a result of the call).
     *
     * @param o element to be removed from this list, if present
     * @return <tt>true</tt> if this list contained the specified element
     * @throws ClassCastException if the type of the specified element
     *         is incompatible with this list
     * (<a href="Collection.html#optional-restrictions">optional</a>)
     * @throws NullPointerException if the specified element is null and this
     *         list does not permit null elements
     * (<a href="Collection.html#optional-restrictions">optional</a>)
     * @throws UnsupportedOperationException if the <tt>remove</tt> operation
     *         is not supported by this list
     */
    boolean remove(Object o);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值