Ich arbeite in einem Projekt, das Java 8 verwenden, dieses Projekt ist über einige geographische Informationen zu bekommen und damit arbeiten. Ich habe bereits Teil dieser Arbeit in Python getan, und jetzt bin ich übersetze dieser Teil zu Java in Python hat 8 gut in Python Ich benutze diese Zeilen unten Koordinaten in Google-Format Postgis-Format zu konvertieren:Convert Python zu Java 8
s1 = tuple(value.split(" "))
s2 = zip(s1[1::2], s1[::2])
zum Beispiel:
ich habe einen Eingang wie: value = "11,1234567912,98765511,343445412,1223323" und so weiter Der Python-Code oben ändert de Eingang: s2 = "12,98765511,1234567912,1223323" und so weiter.
Ändern der Position jedes Koordinatenpaars, jeder Eingang hat Tausende von Koordinaten. Mit meinem Wissen von Java (erworben vor dem Java 8) Ich werde das tun müssen: Um den gleichen Effekt mit Java (vor Java 8) erhalten
try {
String result = "", right = "", left = "";
String[] txt = str.split(" ");
for (int i = 0; i < txt.length; i += 2) {
right = txt[i];
left = txt[i + 1];
result += "," + left + " " + right;
}
return result.substring(1);
} catch (ArrayIndexOutOfBoundsException e) {
return null;
}
Ich werde den Java-Code über tausend Mal ausführen , meine Frage ist: Java 8 hat eine neue Möglichkeit, diesen Code oben mehr wie Python zu machen?
Meine Motivation, diese Frage zu stellen, weil ich auf diese Nachrichten über Java 8 kam:
List<String> someList = new ArrayList<>();
// Add some elements
someList.add("Generic (1.5)");
someList.add("Functional (8)");
// Open a stream
someList.stream()
// Turn all texts in Upper Case
.map(String::toUpperCase)
// Loop all elemnst in Upper Case
.forEach(System.out::println);
Aktualisierung:
Die Lösung von Jean-François Savard war perfekt Java unter Verwendung von 8 wie ich fragte, vielen Dank Jean-Francois Savard
String str = "11.12345679 12.987655 11.3434454 12.1223323 11.12345679 12.987655 11.3434454 12.1223323";
String[] strs = str.split(" ");
str = IntStream.range(0, strs.length) .filter(i -> i % 2 == 0) .mapToObj(i -> strs[i + 1] + " " + strs[i]) .collect(Collectors.joining(","));
System.out.println(str);
>> 12.987655 11.12345679,12.1223323 11.3434454,12.987655 11.12345679,12.1223323 11.3434454
Die Lösung von Vampire und Tukayi fit perfectl gezeigt y in meinem Problem, vielen Dank Jungs
String str = "11.12345679 12.987655 11.3434454 12.1223323 11.12345679
12.987655 11.3434454 12.1223323";
str = str.replaceAll("([^\\s]+) ([^\\s]+)(?: |$)", ",$2 $1").substring(1);
System.out.println(str);
Vielleicht wäre es einfacher, beispielsweise Ein- und Ausgabe zu zeigen; neben Code zeigen und uns sagen: das ist was passieren soll. Und Tipp: Array außerhalb der Grenzen ignorieren; und null zurückgibt, sieht wie ein Programmfehler aus. Sie wissen, dass Ihre Verarbeitung schief geht (weil Sie etwas falsch machen, oder unerwartete Eingaben) ... und Sie ignorieren das einfach ?! – GhostCat
Ist 'return = resultstring (1);' kompilieren? –
Gibt es eine Chance, dass Sie [jython] (http://www.jython.org/) nutzen könnten? Das ist sicherlich die schnellste Option - keine Konvertierung erforderlich. – miraculixx