ArrayList: serializar em uma String

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.

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”.

[quote=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”. [/quote]

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>();

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”.

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);
		
	}

}

[quote=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);
		
	}

}

[/quote]

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

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:

[code]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());		
}

}[/code]

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

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

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.