AH!我有一个字符串列表...我只想从列表中删除一个元素,如果它是“”
但我继续导致程序崩溃。我该如何解决这个问题?我将一个数组列表放入一个字符串列表中,我认为可以将其删除。这就是我所拥有的:
List<String>list;
String[] f= new String[file.length()];
f= file.split("<");
list= Arrays.asList(f);
final Iterator<String> iter = list.iterator();
while (iter.hasNext())
{
final String temp = iter.next();
// TODO check for zero-length arrays
if (temp.equals(""))
{
iter.remove();
}
}
错误:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(Unknown Source)
at java.util.AbstractList$Itr.remove(Unknown Source)
at utilities.Validation.Validate(Validation.java:44)
在我将它转换为List之后,我可以打印列表就好......它正在从中删除成为问题的元素......
答案 0 :(得分:12)
Arrays#asList
返回的List
具有固定大小。由于remove
元素会修改长度,因此不支持。如果您想要List
允许删除项目,请使用new ArrayList<>(Arrays.asList(array));
。
答案 1 :(得分:1)
您获得异常的原因已经得到解答,但我添加了一些关于您的代码的注释:您可以使用removeAll()
方法以更简单的方式从列表中删除所有空字符串。您甚至不必检查给定数组是否为空,因为此方法可以处理它们。
String[] array = { "aa", "", "cc", "", "d" };
List<String> list = new ArrayList<String>(Arrays.asList(array));
list.removeAll(Collections.singleton(""));
System.out.println(list);
打印哪些:
[aa, cc, d]
答案 2 :(得分:0)
Arrays.asList生成一个不允许添加或删除元素的列表。
如果有很多要删除的元素,那么这里有一个快速的方法:
List<String> result = new ArrayList<String>();
for (String next : file) {
if (next != null && next.length() != 0) result.add(next);
}