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); }