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

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

    public static void trackUseCases(List 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 remove operation
     *         is not supported by this list
     * @throws IndexOutOfBoundsException if the index is out of range
     *         (index < 0 || index >= size())
     */
    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 i such that
     * (o==null ? get(i)==null : o.equals(get(i)))
     * (if such an element exists).  Returns true 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 true if this list contained the specified element
     * @throws ClassCastException if the type of the specified element
     *         is incompatible with this list
     * (optional)
     * @throws NullPointerException if the specified element is null and this
     *         list does not permit null elements
     * (optional)
     * @throws UnsupportedOperationException if the remove operation
     *         is not supported by this list
     */
    boolean remove(Object o);

你可能感兴趣的:(java)