您的位置:首页 > 运维架构

List加入和删除元素。(在list中add时出现UnsuppotedOperationException)

2018-03-18 09:21 465 查看

第一种删除方式:迭代器

public class Test {
public static void main(String args[]){
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("b");
Iterator<String> iter = list.iterator();
while(iter.hasNext()){
String s = iter.next();
if(s.equals("b")){
iter.remove();
}
}
System.out.println(list);
}
}


运行结果为【a,c】

第二种删除方式:记录后统一删除

public class Test {
public static void main(String args[]) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("b");
List<String> list_remove = new ArrayList<String>();
for(String s : list){
if("b".equals(s)){
list_remove.add(s); //把要移除的统一记录在一个集合
}
}
//统一移除
list.removeAll(list_remove);
System.out.println(list);
}
}


输出结果:【a,c】

错误删除的例子1,2

for (String s : list) {  //移除元素后,无法预知到元素的位置。
if (s.equals("b")) {
list.remove(s);
}
}

for(int i=0;i<list.size();i++){
if(list.get(i).equals("b")){
list.remove(i);
}
} //输出[a, b, c, c]。size()的问题


向List中添加元素时出现UnsuppotedOperationException

List<String> words = new ArrayList<>();
String[] word = input.split("[\\t \\n]+");
List<String> list = Arrays.asList(word);
for(int i = 0; i < words.size()-1;i++) {
String nowStr = words.get(i);
String nextStr = words.get(i+1);
String bridge = getTwoEdgeLong(nowStr, nextStr);
if(bridge != "") {
words.add(i+1, bridge);//报错
i++;
}
}


原因是:不是每一个LIst的实现都能够支持add方法。最常见的例子就是Arrays.asList()返回的List列表。不支持在结构上的更改。在文档中记载:

Returns a fixed-size list backed by the specified array.

因此解决方法是:(将asList方法改为循环逐个添加元素)

List<String> words = new ArrayList<>();
String[] word = input.split("[\\t \\n]+");
for(int i = 0; i < word.length ;i++) {//更改为循环添加的方法。
words.add(word[i]);
}
for(int i = 0; i < words.size()-1;i++) {
String nowStr = words.get(i);
String nextStr = words.get(i+1);
String bridge = getTwoEdgeLong(nowStr, nextStr);
if(bridge != "") {
words.add(i+1, bridge);/*add method may not supported by special implement*/
i++;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐