ArrayList: serializar em uma String

8 respostas
D

Amigos gostaria de saber como faço para pegar um ArrayList e colocar tudo em uma String só para poder apresentar em JOptionPane.
Quero listar todo o meu array de uma só vez em apenas um jOptionPane.

8 Respostas

T

O método toString de ArrayList já faz o que você quer, mas não quebra em linhas, o que pode tornar um pouco confusa sua apresentação.

Se você não gostou muito do comportamento padrão, crie o seu! Basta um simples “for”.

D

thingol:
O método toString de ArrayList já faz o que você quer, mas não quebra em linhas, o que pode tornar um pouco confusa sua apresentação.

Se você não gostou muito do comportamento padrão, crie o seu! Basta um simples “for”.

valew pela dica
ja usei o for mas com ele só consigo listar um a um e o toString da erro, acho q é pq ele ja é String: ArrayList<String> FilaDinamica = new ArrayList<String>();

E

Acho que você não entendeu. Você cria uma String grande com o “for” (use um StringBuilder para acumular os dados de cada string do arraylist), e o mostra com o JOptionPane. Para separar uma string da outra em um JOptionPane (deixar cada uma em uma linha), use um “\n”.

A

Dá pra brincar com o for:

package Testes;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

public class SuperString {
	
	public static void main(String[] args) {
		
		List<String> c = new ArrayList<String>();
		
		for (int i = 0; i < 30; i++){
			c.add("" + i);
		}
		
		String superString="";
		for (String t : c){
			superString += t + "\n";
		}
		
		JOptionPane.showMessageDialog(null, superString);
		
	}

}
D

andre.froes:
Dá pra brincar com o for:

package Testes;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

public class SuperString {
	
	public static void main(String[] args) {
		
		List<String> c = new ArrayList<String>();
		
		for (int i = 0; i < 30; i++){
			c.add("" + i);
		}
		
		String superString="";
		for (String t : c){
			superString += t + "\n";
		}
		
		JOptionPane.showMessageDialog(null, superString);
		
	}

}

exemplo simples e bacana para o entendimento, valew consegui fazer o que eu queria com esse exemplo.

ViniGodoy

Só tem um erro, e até grave, ele faz concatenações com String, não com StringBuilder. E isso é extremamente lento.

O código corrigido fica assim:

package Testes;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

public class SuperString {
	
	public static void main(String[] args) {
		
		List<String> c = new ArrayList<String>();
		
		for (int i = 0; i < 30; i++){
			c.add("" + i);
		}
		
		StringBuilder superString= new StringBuilder();
		for (String t : c){
			superString.append(t).append("\n");
		}
		
		JOptionPane.showMessageDialog(null, superString.toString());		
	}
}

Sempre que for montar strings dentro de um for, use o StringBuilder.

A

Valeu Vini, eu não sabia desse esquema de performance não.

E

Se você olhar seu código, e ele tiver um “+=” com uma string no lado esquerdo, prepare-se para usar um StringBuilder se descobrir que mais de 3 concatenações podem ser possíveis.

Uma vez tive de descobrir por que é que um programa estava muito lento, e descobrimos que o problema estava em uma rotina utilitária que todo o sistema usava. Ela simplesmente montava uma string, caracter a caracter, usando “+=”. Essa rotina “derrubava” todo o sistema.

Criado 12 de julho de 2010
Ultima resposta 13 de jul. de 2010
Respostas 8
Participantes 5