/ / remove o elemento da lista de seqüências de caracteres? - java

Remover elemento da lista de seqüências de caracteres? - java

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 № 1

o List retornado por Arrays#asList tem um tamanho fixo. Desde a removeSe 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);
}