1

我想在 Java 中测试一些关于泛型的东西,所以我写了一个使用泛型的方法,它接受一个列表并删除所有其他元素。我写了这个方法,但它给出了 UnsupportedOperationException 错误。这里有什么问题?

    Integer[] strArray = new Integer[] {1, 2, 3, 4, 5}; 
    List<Integer> numbers = Arrays.asList(strArray);
    removeOdd(numbers);
    for (Object o : numbers){
         System.out.println( o );
    }
}
        public static <T> void removeOdd ( List<T> list){
            Iterator<T> itr = list.iterator();
            int i = 0;

                while(itr.hasNext())
                {
                    itr.next();
                    i++;
                    if(i % 2 ==1){
                        itr.remove();
                    }
                }   
4

2 回答 2

7

Arrays.asList(T...)创建一个固定大小的列表。您可以替换元素,但不能添加或删除任何元素。

于 2013-04-28T22:11:02.397 回答
5

Arrays.asList返回 a List,其单个元素可以更新,但不允许添加或删除元素。要创建可变大小List,您可以使用:

List<Integer> numbers = new ArrayList<>(Arrays.asList(strArray));
于 2013-04-28T22:10:54.960 回答