J'ai la chaîne suivante: et j'essaie de le convertir en: p> pour être trié. C'est ce que j'ai essayé jusqu'à présent: p> J'ai donc réussi à obtenir le premier élément de chaque "unité" séparément. Mais comment obtenir tous et les commander pour que je reçois ce résultat? P> peut-il être encore plus simple à l'aide de Java8? P> Merci d'avance! P> P>
4 Réponses :
Je suppose une façon de le faire serait: remarquez simplement que si vos motifs sont plus compliqués que \ n code> ou
ou
, < / Code> - Il est judicieux d'extraire ceux d'un modèle code> distinct code> (s) p> p>
Ceci est la bonne réponse en raison de Collectors.Joining ("\\ n") code>. Je ne comprends pas la voix bas :( a mon +1.
@Nikolas de note latérale: vous n'avez pas besoin de vous soucier des bowvotes sans commentaire, je me suis arrêté pour m'occuper de ceux qu'il y a longtemps il y a longtemps
Merci Eugen, aussi voté maintenant. Je ne sais pas pourquoi j'ai eu tellement de bowvotes par je sais que votre réponse est ce que je cherchais.
String string = "bbb,aaa,ccc\n222,111,333\nyyy,xxx,zzz"; String converted = Arrays.stream(string.split("\\n")) .map(s -> Arrays.stream(s.split(",")) .sorted() .collect(Collectors.joining(","))) .collect(Collectors.joining("\\n"));
Neutralisé. Mais une suggestion générale, il est plus logique d'expliquer quoi et pourquoi un bloc de code avez-vous partagé comme une réponse.
Vous pouvez l'avoir la voie à l'ancienne em> sans l'utilisation de Java 8 fort> comme ceci: mais toujours, Java 8 devrait être préféré à mon avis, alors collez-vous à l'une des autres réponses. P> p>
@Holger j'ai ajusté la réponse à être pure
Le modèle code> Classe code> vous donne une possibilité de diffuser directement scarpée string code> s.
String string = "bbb,aaa,ccc\n222,111,333\nyyy,xxx,zzz";
Pattern commaPattern = Pattern.compile(",");
String sorted = Pattern.compile("\n").splitAsStream(string)
.map(elem -> commaPattern.splitAsStream(elem).sorted().collect(Collectors.joining(",")))
.collect(Collectors.joining("\n"));
Mais lorsque vous exécutez motif.comple code> à l'intérieur d'une fonction appliquée à chaque élément, vous détruisez l'avantage de la préparation d'un modèle code> de code> et aurait pu utiliser la méthode équivalente sur
String code> qui peut appeler
motif.comple code> sous la hotte. Dans cet exemple spécifique,
string.split code> sera encore plus efficace car il gère des motifs uniques de caractères sans signification spéciale à part entière sans toute la machinerie Regex (et les chaînes d'entrée sont plutôt courtes).
@Holger Vous avez raison en termes de préparation du modèle code>. On pourrait créer une constante. Mais - sans connaître la mise en œuvre réelle - je supposerais que la division puis diffuserait moins de mémoire efficace.
Laisser code> l'optimisation sans-papiers de String code> de côté, il est préférable de supposer qu'il y aura un certain nombre d'éléments auquel la matrice créée avant le streaming nécessite plus de mémoire que l'alternative. Donc, pour le code de production avec une entrée inconnue ou lorsque vous chaîne des opérations de court-circuit, motif.splitasstream code> est en effet le meilleur choix.
Quel est le but de ces
j code> et
k code> variables dans votre deuxième boucle?
@Holger, restes de colle copier innocent :)