Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 枚举列表删除问题_Java_List_Enums_Enumeration - Fatal编程技术网

Java 枚举列表删除问题

Java 枚举列表删除问题,java,list,enums,enumeration,Java,List,Enums,Enumeration,有人能帮我解决这个问题吗 public static void main(String[] args) { List<TestEnum> list1 = new ArrayList<TestEnum>(); list1.add(TestEnum.ONE); list1.add(TestEnum.TWO); list1.add(TestEnum.THREE); System.out.println(list1); Syst

有人能帮我解决这个问题吗

public static void main(String[] args) 
{
    List<TestEnum> list1 = new ArrayList<TestEnum>();
    list1.add(TestEnum.ONE);
    list1.add(TestEnum.TWO);
    list1.add(TestEnum.THREE);

    System.out.println(list1);
    System.out.println(list1.remove(TestEnum.TWO));
    System.out.println(list1);

    System.out.println("-----------------------");

    TestEnum[] xx = new TestEnum[]{TestEnum.ONE, TestEnum.TWO, TestEnum.THREE};
    List<TestEnum> list2 = Arrays.asList(xx);

    System.out.println(list2);
    System.out.println(list2.remove(TestEnum.TWO));
    System.out.println(list2);
}

请帮助-为什么会发生这种情况,我还检查了hashcode?

数组返回的列表。asList()具有固定大小--它所支持的数组的大小。它不支持可能导致大小更改的操作:
add()
addAll()
remove()
removeAll()
retainal()
clear()

您可以使用以下习惯用法创建可修改大小的列表:

List<TestEnum> = new ArrayList<>(Arrays.asList(xx));
List=newarraylist(Arrays.asList(xx));

这将创建一个普通的
数组列表
,该列表由从
数组的结果中复制的元素初始化。asList()

数组返回。asList()
具有固定大小--它所支持的数组的大小。它不支持可能导致大小更改的操作:
add()
addAll()
remove()
removeAll()
retainal()
clear()

您可以使用以下习惯用法创建可修改大小的列表:

List<TestEnum> = new ArrayList<>(Arrays.asList(xx));
List=newarraylist(Arrays.asList(xx));

这将创建一个普通的
ArrayList
,该列表由从
数组的结果中复制的元素初始化。asList()
数组。asList
返回不可变列表的实例,在该实例上无法调用
remove
。你必须把它包装在新的列表中


newarraylist(Arrays.asList(xx))
Arrays.asList
返回不可变列表的实例,在该实例上无法调用
remove
。你必须把它包装在新的列表中


newarraylist(Arrays.asList(xx))
Arrays.asList
返回一个特殊的
ArrayList
对象,该对象不支持任何修改其大小的操作

从该方法的文档中:

此方法还提供了创建固定大小列表的方便方法 初始化为包含多个元素


Arrays.asList
返回一个特殊的
ArrayList
对象,该对象不支持任何修改其大小的操作

从该方法的文档中:

此方法还提供了创建固定大小列表的方便方法 初始化为包含多个元素


如果查看
Arrays
类的
asList
方法,您将看到返回一个
newarraylist()
。但是实例化的对象在
Arrays
类中有另一个私有
ArrayList
类。这个类像普通的
ArrayList
一样扩展了
AbstractList
,但它不重写
remove
方法。这是
remove
方法的原始实现

/**
 * {@inheritDoc}
 *
 * <p>This implementation always throws an
 * {@code UnsupportedOperationException}.
 *
 * @throws UnsupportedOperationException {@inheritDoc}
 * @throws IndexOutOfBoundsException     {@inheritDoc}
 */
public E remove(int index) {
    throw new UnsupportedOperationException();
}
/**
*{@inheritardoc}
*
*此实现始终抛出
*{@code UnsupportedOperationException}。
*
*@throws UnsupportedOperationException{@inheritardoc}
*@throws IndexOutOfBoundsException{@inheritDoc}
*/
公共E删除(int索引){
抛出新的UnsupportedOperationException();
}

如果查看
Arrays
类的方法
asList
,您将看到返回一个
newarraylist()
。但是实例化的对象在
Arrays
类中有另一个私有
ArrayList
类。这个类像普通的
ArrayList
一样扩展了
AbstractList
,但它不重写
remove
方法。这是
remove
方法的原始实现

/**
 * {@inheritDoc}
 *
 * <p>This implementation always throws an
 * {@code UnsupportedOperationException}.
 *
 * @throws UnsupportedOperationException {@inheritDoc}
 * @throws IndexOutOfBoundsException     {@inheritDoc}
 */
public E remove(int index) {
    throw new UnsupportedOperationException();
}
/**
*{@inheritardoc}
*
*此实现始终抛出
*{@code UnsupportedOperationException}。
*
*@throws UnsupportedOperationException{@inheritardoc}
*@throws IndexOutOfBoundsException{@inheritDoc}
*/
公共E删除(int索引){
抛出新的UnsupportedOperationException();
}

数组返回的列表。asList()
不支持
。remove()
数组返回的列表的可能副本。asList()
不支持
。remove()
它的可能副本实际上支持修改方法,但是只有那些不改变大小的。它实际上支持修改方法,但只支持那些不改变大小的方法。
数组。asList()
不是不可变的,因为你可以调用
。set()
数组来修改它。asList()
不是不可变的,因为你可以调用
。set()