Ah! Eu tenho uma lista de seqüências ... e eu só quero remover um elemento da lista, se é ""
mas eu continuo causando o programa a falhar. Como faço para contornar isso? Eu fiz uma lista de matrizes em uma lista de seqüências de caracteres pensando que eu poderia removê-lo dessa maneira. Aqui está o que eu tenho:
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();
}
}
Erro:
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)
Depois que eu convertê-lo em uma lista, eu posso imprimir a lista muito bem .. ele está removendo elementos dele que se torna um problema ...
Respostas:
12 para resposta № 1o List
retornado por Arrays#asList
tem um tamanho fixo. Desde a remove
Se um elemento modificar o comprimento, ele não é suportado. Se você quiser um List
que permite a remoção de itens, use new ArrayList<>(Arrays.asList(array));
.
1 para resposta № 2
A razão pela qual você estava recebendo a exceção já foi respondida, mas eu adicionei uma pequena nota sobre o seu código: Você pode remover todas as strings vazias de uma lista de uma forma muito mais simples usando o comando. removeAll()
método. Você nem precisa verificar se a matriz especificada está vazia, porque esse método pode manipulá-las.
String[] array = { "aa", "", "cc", "", "d" };
List<String> list = new ArrayList<String>(Arrays.asList(array));
list.removeAll(Collections.singleton(""));
System.out.println(list);
Que imprime:
[aa, cc, d]
0 para resposta № 3
Arrays.asList produz uma lista que não permite adicionar ou remover elementos.
Se houver muitos elementos a serem removidos, aqui está uma maneira rápida de fazer isso:
List<String> result = new ArrayList<String>();
for (String next : file) {
if (next != null && next.length() != 0) result.add(next);
}