Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 List.add()UnsupportedOperationException_Java_List_Exception_Arraylist_Unsupportedoperation - Fatal编程技术网

Java List.add()UnsupportedOperationException

Java List.add()UnsupportedOperationException,java,list,exception,arraylist,unsupportedoperation,Java,List,Exception,Arraylist,Unsupportedoperation,我试图将对象添加到列表实例,但它抛出了一个不支持操作异常。 有人知道为什么吗 我的Java代码: String[] membersArray = request.getParameterValues('members'); List<String> membersList = Arrays.asList(membersArray); for (String member : membersList) { Person person = Dao.findByName(memb

我试图将对象添加到
列表
实例,但它抛出了一个
不支持操作异常
。 有人知道为什么吗

我的Java代码:

String[] membersArray = request.getParameterValues('members');
List<String> membersList = Arrays.asList(membersArray);

for (String member : membersList) {
    Person person = Dao.findByName(member);
    List<String> seeAlso;
    seeAlso = person.getSeeAlso();
    if (!seeAlso.contains(groupDn)){
        seeAlso.add(groupDn);
        person.setSeeAlso(seeAlso);
    }
}
String[]membersArray=request.getParameterValues('members');
List membersList=Arrays.asList(membersArray);
for(字符串成员:membersList){
Person=Dao.findByName(成员);
另请参阅清单;
seealsh=person.getseealsh();
如果(!请参见也包含(groupDn)){
另见.add(groupDn);
person.setseeal(另请参见);
}
}
错误消息:

java.lang.UnsupportedOperationException java.util.AbstractList.add(Unknown Source) java.util.AbstractList.add(Unknown Source) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) java.lang.UnsupportedOperationException java.util.AbstractList.add(未知源) java.util.AbstractList.add(未知源) javaservlet.http.HttpServlet.service(HttpServlet.java:641) javaservlet.http.HttpServlet.service(HttpServlet.java:722) 并非每个实现都支持
add()
方法

一个常见的例子是返回的
列表
:它被记录为而不是,以支持任何结构修改(即移除或添加元素)(强调):

返回指定数组支持的固定大小的列表

即使这不是您试图修改的特定
列表
,答案仍然适用于其他不可变或仅允许某些选定更改的
列表
实现

您可以通过阅读和的文档了解这一点,哪些文档将此作为“(可选操作)”。该短语的确切含义在
列表的顶部解释

作为一种解决方法,您可以将列表的副本创建到一个已知的可修改实现,如
ArrayList

seeAlso = new ArrayList<>(seeAlso);
seealst=newarraylist(seealst);
并非每个实现都支持
add()
方法

一个常见的例子是返回的
列表
:它被记录为而不是,以支持任何结构修改(即移除或添加元素)(强调):

返回指定数组支持的固定大小的列表

即使这不是您试图修改的特定
列表
,答案仍然适用于其他不可变或仅允许某些选定更改的
列表
实现

您可以通过阅读和的文档了解这一点,哪些文档将此作为“(可选操作)”。该短语的确切含义在
列表的顶部解释

作为一种解决方法,您可以将列表的副本创建到一个已知的可修改实现,如
ArrayList

seeAlso = new ArrayList<>(seeAlso);
seealst=newarraylist(seealst);

您不能修改LDAP查询的结果。您的问题在这一行:

seeAlso.add(groupDn);

“请参阅”列表不可修改。

您不能修改LDAP查询的结果。您的问题在这一行:

seeAlso.add(groupDn);

请参见列表不可修改。

您必须初始化列表请参见:

List<String> seeAlso = new Vector<String>();
List另见=新向量();

List另见=newarraylist();

您必须初始化列表,另请参见:

List<String> seeAlso = new Vector<String>();
List另见=新向量();

List另见=newarraylist();

列表成员列表=数组。asList(membersArray)

返回不可变列表,您需要做的是


新的ArrayList(Arrays.asList(membersArray));使其可变

List membersList=Arrays.asList(membersArray)

返回不可变列表,您需要做的是


新的ArrayList(Arrays.asList(membersArray));为了使其可变

许多列表实现支持有限的添加/删除和数组支持。asList(membersArray)就是其中之一。您需要在java.util.ArrayList中插入记录,或者使用以下方法转换为ArrayList

只需对代码进行最小的更改,就可以执行以下操作将列表转换为ArrayList。第一个解决方案是对您的解决方案进行最小的更改,但我想第二个解决方案更优化

    String[] membersArray = request.getParameterValues('members');
    ArrayList<String> membersList = new ArrayList<>(Arrays.asList(membersArray));
String[]membersArray=request.getParameterValues('members');
ArrayList membersList=新的ArrayList(Arrays.asList(membersArray));

String[]membersArray=request.getParameterValues('members');
ArrayList membersList=Stream.of(membersArray.collect(Collectors.toCollection(ArrayList::new));

许多列表实现支持有限的添加/删除和数组支持。asList(membersArray)就是其中之一。您需要在java.util.ArrayList中插入记录,或者使用以下方法转换为ArrayList

只需对代码进行最小的更改,就可以执行以下操作将列表转换为ArrayList。第一个解决方案是对您的解决方案进行最小的更改,但我想第二个解决方案更优化

    String[] membersArray = request.getParameterValues('members');
    ArrayList<String> membersList = new ArrayList<>(Arrays.asList(membersArray));
String[]membersArray=request.getParameterValues('members');
ArrayList membersList=新的ArrayList(Arrays.asList(membersArray));

String[]membersArray=request.getParameterValues('members');
ArrayList membersList=Stream.of(membersArray.collect(Collectors.toCollection(ArrayList::new));

形成继承概念,如果当前类中没有特定的方法,它将在超类中搜索该方法。如果可用,它将执行

它执行抛出的
AbstractList
add()
方法


从数组转换为集合Obejct时。i、 例如,从基于数组到基于集合的API,然后它将为您提供固定大小的集合对象,因为数组的行为是固定大小的

java.util.Arrays.asList(T…a)

收集样品进行确认。

您甚至可以从集合类
集合中创建固定大小的数组

样本源
{ seeAlso.addall(groupDn); }