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.