@Princeyesuraj, a resposta oficial é fornecida por adarshr . Se você quiser um separador próprio, tente a resposta de JoeSlav e, se não houver problema de encadeamento, use StringBuilder em vez de StringBuffer para obter eficiência. A resposta do krock é boa, mas um pouco exagerada na minha opinião.
Código Dante May
Respostas:
469
Se você deseja apenas um despejo "de estilo de depuração" de uma matriz:
String str =Arrays.toString(arr);
ou, para mais controle (antes do Java 8):
StringBuilder builder =newStringBuilder();for(String s : arr){
builder.append(s);}String str = builder.toString();
(Java 8 e superior):
String str =String.join(",", arr);
E se você vem do ângulo do Android:
String str =TextUtils.join(",", arr);
Você pode modificar o acima, dependendo de quais caracteres, se houver, você deseja entre as strings.
Você pode ver um código quase idêntico ao código anterior ao Java 8, mas usando StringBuffer- StringBuilderé uma classe mais nova que não é segura para threads, mas, portanto, tem melhor desempenho em um único thread, pois elimina a sincronização desnecessária. Em resumo, é melhor usar StringBuilderem 99% dos casos - em termos de funcionalidade, os dois são idênticos.
NÃO use uma string e apenas a acrescente com + = como algumas das respostas mostradas aqui. Isso envia o GC para o alto porque você está criando e jogando fora tantos objetos de string quanto itens em sua matriz. Para matrizes pequenas, você pode não perceber a diferença, mas para matrizes grandes, pode ser uma ordem de magnitude mais lenta.
Use o Apache commons StringUtils.join(). Ele pega uma matriz como parâmetro (e também possui sobrecargas para Iterablee Iteratorparâmetros) e chama toString()cada elemento (se não for nulo) para obter a representação de sequência de cada elemento. Cada representação de sequência de elementos é unida em uma sequência com um separador entre eles se um for especificado:
Retorna uma representação de seqüência de caracteres do "conteúdo profundo" da matriz especificada. Se a matriz contiver outras matrizes como elementos, a representação da sequência conterá seu conteúdo e assim por diante. Este método foi projetado para converter matrizes multidimensionais em strings
Se você não precisa de muito controle, acredito que esta é a solução mais simples, pois você não precisa de uma biblioteca de terceiros. Aqui está um exemplo: System.out.println (Arrays.deepToString (args));
Você deseja um código que produza string a partir de arrayList,
Iterate through all elements in list and add it to your String result
você pode fazer isso de duas maneiras: usando String como resultado ou StringBuffer / StringBuilder.
Exemplo:
String result ="";for(String s : list){
result += s;}
... mas isso não é uma boa prática por motivos de desempenho. Melhor é usar StringBuffer (threads seguros) ou StringBuilder, que são mais apropriados para adicionar Strings
Sua resposta é basicamente a mesma que smas; apenas um pouco mais complicado; portanto, certamente não "o mais fácil". Além disso, Arrays.toString () é ainda mais fácil.
GhostCat
-22
Se você souber quantos elementos a matriz possui, uma maneira simples é fazer isso:
array.toString()
? Seja mais específico.Respostas:
Se você deseja apenas um despejo "de estilo de depuração" de uma matriz:
ou, para mais controle (antes do Java 8):
(Java 8 e superior):
E se você vem do ângulo do Android:
Você pode modificar o acima, dependendo de quais caracteres, se houver, você deseja entre as strings.
Você pode ver um código quase idêntico ao código anterior ao Java 8, mas usando
StringBuffer
-StringBuilder
é uma classe mais nova que não é segura para threads, mas, portanto, tem melhor desempenho em um único thread, pois elimina a sincronização desnecessária. Em resumo, é melhor usarStringBuilder
em 99% dos casos - em termos de funcionalidade, os dois são idênticos.NÃO use uma string e apenas a acrescente com + = como algumas das respostas mostradas aqui. Isso envia o GC para o alto porque você está criando e jogando fora tantos objetos de string quanto itens em sua matriz. Para matrizes pequenas, você pode não perceber a diferença, mas para matrizes grandes, pode ser uma ordem de magnitude mais lenta.
fonte
Arrays.toString(yourArray);
, mas eu acho que você usouyourArray.toString();
1.8
você também pode usarString::join
, em vez do loop for.String.join("", arr);
Use o Apache commons
StringUtils.join()
. Ele pega uma matriz como parâmetro (e também possui sobrecargas paraIterable
eIterator
parâmetros) e chamatoString()
cada elemento (se não for nulo) para obter a representação de sequência de cada elemento. Cada representação de sequência de elementos é unida em uma sequência com um separador entre eles se um for especificado:Produz:
fonte
Eu gosto de usar o Guava Joiner do Google para isso, por exemplo:
produziria a mesma String que:
ETA: Java 8 tem suporte semelhante agora:
Não consigo ver o suporte para ignorar valores nulos, mas isso é facilmente contornado.
fonte
null
seria "aquele cujo nome não deve ser mencionado" :-)Joiner.on(", ").useForNull("Voldemort").join("Harry", null, "Ron", "Hermione");
String.join(", ", "Harry", null, "Ron", "Hermione").replaceAll("null", "Voldermart");
Você poderia fazer isso, considerando uma matriz
a
do tipo primitivo:fonte
No Java 8, a maneira mais simples que penso é:
Dessa forma, você pode escolher um delimitador arbitrário.
fonte
Experimente o método Arrays.deepToString .
Retorna uma representação de seqüência de caracteres do "conteúdo profundo" da matriz especificada. Se a matriz contiver outras matrizes como elementos, a representação da sequência conterá seu conteúdo e assim por diante. Este método foi projetado para converter matrizes multidimensionais em strings
fonte
Experimente os métodos sobrecarregados Arrays.toString .
Ou então, tente isso abaixo da implementação genérica:
fonte
A seguir, é apresentado um exemplo de conversão de matriz em cadeia.
fonte
Se você não tiver a opção de usar o Java 6 ou 7, use a junção Divide & Conquer.
fonte
Você deseja um código que produza string a partir de arrayList,
você pode fazer isso de duas maneiras: usando String como resultado ou StringBuffer / StringBuilder.
Exemplo:
... mas isso não é uma boa prática por motivos de desempenho. Melhor é usar StringBuffer (threads seguros) ou StringBuilder, que são mais apropriados para adicionar Strings
fonte
Use o método de junção da biblioteca StringUtils do Apache Commons .
fonte
fonte
Se você souber quantos elementos a matriz possui, uma maneira simples é fazer isso:
fonte