Concatenar um array numa String

Tenho um objeto Nota e dentro desse objeto tenho um array de Itens

Preciso concatenar todos Itens da Nota numa String.

Estou fazendo isso atraves de um for

String medicamento = "";
ItemContratacao item = new ItemContratacao();
for (int i=0; i<contrato.getItemContratacao().length; i++){
      item = contrato.getItemContratacao()[i];
      medicamento=medicamento+item.getDs_material()+";";
}

Qual a melhor forma de fazer isso? :oops:

vc só qr ver numa linhas??
se for pode ser algo parecido com isso

ArrayList<String> array = new Arraylist<String>(); String a = "Palavra 1"; array.add(a); a = "Palavra 2"; array.add(a); String toShow = null; for(int i = 0; i < array.size();i++){ toShow = toShow + array.get(i); } System.out.println(toShow);

vai mostrar tudo numa linha

Não sei se fui bem clara:

Eu estou precisando de um metodo (não sei se existe???) que faça o contrário do metodo split do java.

O split separa as string e coloca num array

Eu tenho um array e quero concatená-lo todo em uma unica String.
Tem algum metodos que faz isso ou tenho que fazer um 

for para varrer o array ?

nao sei se tem… mas acho q tem de fazer um for concatenando em uma string.

procurei sobre isso tb e foi a resposta q me deram a respeito

Só sei por meio de for não preciso muito disso então não tive necessidade de procurar

Amigo,

primeiro não faça concatenações com String, use de preferência StringBuilder (Java 5 ou >) ou pelo menos StringBuffer e o método append.

Que tipo de objeto você retorna em contrato.getItemContratacao()?

é um array? (prpriedade length)

A classe String possui um contrutor para arrays de tipos primitivos, só que este método ira iterar o seu array.

Existe a API java.util.Arrays, um exemplo:

[code] JButton[] but = new JButton[10];
for(int i=0; i<10; i++)
but[i] = new JButton("teste "+i);
String teste = java.util.Arrays.deepToString(but);
System.out.println(teste);

    String teste2 = java.util.Arrays.toString(but);
    System.out.println(teste2);

[/code]

veja se estes dois métodos te ajudam:

:arrow:java.util.Arrays.deepToString(but)
:arrow:java.util.Arrays.toString(but);

A API normalmente é mais rapida que algoritmos de garagem…

espero que te ajude.

fw

1 curtida

Assim fica melhor

StringBuilder medicamento = new StringBuilder();
ItemContratacao item = new ItemContratacao();
for (ItemContratacao item: contrato) {
	medicamento.apend(item.getDs_material());
	medicamento.append(";");
}

o retorno é o seu objeto medicamento.toString();

Até.

StringBuilder serve só pra isso ou tem mais utilidades?

A classe StringBuilder substitui a classe StringBuffer, com todos os métodos. O importante é o conceito destas classes, veja:

String a = “CASA”;
a = a + “S”;

neste caso você criou duas instâncias de String, porque String é “imutável”. A String “CASA” fica a disposição para o garbage, enquanto que a instância “CASAS” fica associada a variável a.

Agora com StringBuffer:

StringBuffer buf = new StringBuffer(“CASA”);
buf.append(“S”);

é a mesma String, não ocorre a instanciaçã, logo é mais rápido.

Existem uma grande gama de métodos que modificam a String e que fazem falta na classe String, tais como reverse etc.

fw

OPA, erro encontrado!

StringBuilder NÃO substitui a classe StringBuffer.
A principal diferença entre elas é que StringBuilder não é thread-safe (seu métodos não são synchronized), enquanto que StringBuffer é.

Pode haver situações em que se usa uma, em outras se utiliza outra. Portanto cuidado.

haha vc escreveu tudo como StringBuilder. O correto ficaria

StringBuilder NÃO substitui a classe [color=red]StringBuffer[/color].
A principal diferença entre elas é que StringBuilder não é thread-safe (seu métodos não são synchronized), enquanto que [color=red]StringBuffer [/color]é.

:oops:

foi mal. Aliás, foi péssimo…rsrs.

Vou corrigir.