|
You last visited: Today at 02:27
Advertisement
Wie kann ich Arrays sortieren?
Discussion on Wie kann ich Arrays sortieren? within the Java forum part of the Coders Den category.
12/08/2016, 14:20
|
#1
|
elite*gold: 0
Join Date: Sep 2013
Posts: 465
Received Thanks: 81
|
Wie kann ich Arrays sortieren?
Hallo Leute,
wie kann ich zwei Arrays sortiert ausgeben lassen? Habe im Internet geschaut, aber ich blicke da immer noch nicht durch.
Bspw. Array hat 9,8,7,6,5 und Array2 hat 4 3 2 1
Kann ich das beides irgendwie zusammen und sortiert ausgeben lassen? Und was bedeutet "merge" ? Danke euch im Voraus !
|
|
|
12/08/2016, 15:54
|
#2
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
"merge" heißt einfach nur zusammenfügen.
Zwei Arrays kannste zB. so mergen und sortiert ausgeben. Fürs Sortieren gibts Standardmethoden. In deinem Fall wären die beiden Arrays nach dem mergen ja schon absteigend sortiert, deshalb mal ein Beispiel wie man es aufsteigend sortieren würde:
Code:
public static void main(String[] args) {
int[] arr1 = new int[]{9, 8, 7, 6, 5};
int[] arr2 = new int[]{4, 3, 2, 1};
//ohne Java8 Streams
int[] result = new int[arr1.length + arr2.length];
System.arraycopy(arr1, 0, result, 0, arr1.length);
System.arraycopy(arr2, 0, result, arr1.length, arr2.length);
Arrays.sort(result);
System.out.println(Arrays.toString(result));
//mit Java8 Streams
System.out.println(Arrays.toString(IntStream.concat(Arrays.stream(arr1), Arrays.stream(arr2)).sorted().toArray()));
}
|
|
|
12/08/2016, 16:39
|
#3
|
elite*gold: 0
Join Date: Sep 2013
Posts: 465
Received Thanks: 81
|
Quote:
Originally Posted by Belur
"merge" heißt einfach nur zusammenfügen.
Zwei Arrays kannste zB. so mergen und sortiert ausgeben. Fürs Sortieren gibts Standardmethoden. In deinem Fall wären die beiden Arrays nach dem mergen ja schon absteigend sortiert, deshalb mal ein Beispiel wie man es aufsteigend sortieren würde:
Code:
public static void main(String[] args) {
int[] arr1 = new int[]{9, 8, 7, 6, 5};
int[] arr2 = new int[]{4, 3, 2, 1};
//ohne Java8 Streams
int[] result = new int[arr1.length + arr2.length];
System.arraycopy(arr1, 0, result, 0, arr1.length);
System.arraycopy(arr2, 0, result, arr1.length, arr2.length);
Arrays.sort(result);
System.out.println(Arrays.toString(result));
//mit Java8 Streams
System.out.println(Arrays.toString(IntStream.concat(Arrays.stream(arr1), Arrays.stream(arr2)).sorted().toArray()));
}
|
Hey, danke dir für die Lösung und Erklärung
Wann genau würde man denn die Lösung mit den Java8 Streams benutzen? Gibt es da irgendwie Empfehlungen, wann man was nutzen sollte oder soll man das nehmen, was einem besser "einleuchtet" und "leichter" zum schreiben ist?
|
|
|
12/08/2016, 16:48
|
#4
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Würde das nehmen was dir besser gefällt. Oft lassen sich Sachen mit Streams kürzer schreiben bzw. leichter in einem Befehl zusammenfassen. Wird dann aber manchmal auch schwerer lesbar.
Falls Performance ne Rolle spielt könnte das auch ein Grund sein keine Streams zu benutzen. Ich bin mir ziemlich sicher, dass die erste Variante schneller ist  Wobei das bei diesen geringen Zeiten natürlich irrelevant ist.
|
|
|
12/08/2016, 17:06
|
#5
|
elite*gold: 0
Join Date: Sep 2013
Posts: 465
Received Thanks: 81
|
Quote:
Originally Posted by Belur
Würde das nehmen was dir besser gefällt. Oft lassen sich Sachen mit Streams kürzer schreiben bzw. leichter in einem Befehl zusammenfassen. Wird dann aber manchmal auch schwerer lesbar.
Falls Performance ne Rolle spielt könnte das auch ein Grund sein keine Streams zu benutzen. Ich bin mir ziemlich sicher, dass die erste Variante schneller ist  Wobei das bei diesen geringen Zeiten natürlich irrelevant ist.
|
Okay, danke dir  Hilfst echt weiter
Kann man die Java8 Streams eigentlich überall anwenden, wo es eine Rückgabe mit System print ln gibt?
|
|
|
12/08/2016, 17:13
|
#6
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Die System.out.println() Methode hat ja keinen Rückgabewert (void).
Mit Streams kann man sehr viel machen (dieses Beispiel war jetzt eher etwas trivialeres), gibt auch etliche Tutorials dazu. Oft ist das sehr praktisch um Sachen kurz zu fassen.
|
|
|
12/09/2016, 17:06
|
#7
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
Quote:
Originally Posted by Belur
Falls Performance ne Rolle spielt könnte das auch ein Grund sein keine Streams zu benutzen. Ich bin mir ziemlich sicher, dass die erste Variante schneller ist  Wobei das bei diesen geringen Zeiten natürlich irrelevant ist.
|
Warum genau sollte das 1. schneller sein ? Und performance ist nie irrelevant.
|
|
|
12/09/2016, 19:23
|
#8
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Quote:
Originally Posted by C0untLizzi
Warum genau sollte das 1. schneller sein ? Und performance ist nie irrelevant.
|
Ob Performance relevant ist liegt wohl immer noch am jeweiligen Use-Case. Wenn man eine Webanwendung oder ähnliches hat, machen die paar Nanosekunden keinen Unterschied. Da ist Lesbarkeit etc. wichtiger.
Und warum das 1. Programm schneller ist? Vermutlich weil System.arraycopy nativ implementiert ist und was uU deutlich schneller sein kann. Wobei das bei Arrays dieser Größenordnung ohnehin völlig irrelevant ist. Vllt. werden Streams von der JVM auch nicht so gut optimiert oder ähnliches. Du kannst ja mal selbst messen und gucken was schneller ist
Hier mal eine Messung von mir:
PHP Code:
@State(Scope.Thread) public class Test {
int[] arr1 = new int[]{9, 8, 7, 6, 5}; int[] arr2 = new int[]{4, 3, 2, 1};
public static void main(String[] args) throws RunnerException { Options opt = new OptionsBuilder() .include(Test.class.getSimpleName()) .warmupIterations(1000) .measurementIterations(1000) .timeUnit(TimeUnit.NANOSECONDS) .mode(Mode.AverageTime) .forks(1) .build();
new Runner(opt).run(); }
//@Benchmark public int[] streamBenchmark() { return IntStream.concat(Arrays.stream(arr1), Arrays.stream(arr2)).sorted().toArray(); }
//@Benchmark public int[] regBenchmark() { int[] result = new int[arr1.length + arr2.length]; System.arraycopy(arr1, 0, result, 0, arr1.length); System.arraycopy(arr2, 0, result, arr1.length, arr2.length); Arrays.sort(result); return result; } }
Mit dem Ergebnis:
Code:
Benchmark Mode Cnt Score Error Units
Test.regBenchmark avgt 1000 79,475 ± 1,531 ns/op
Test.streamBenchmark avgt 1000 188,236 ± 1,402 ns/op
Und damit siehst du auch, dass sich meine Vermutung bestätigt hat. Streams sind fast immer langsamer als vergleichbare Collections Iterationen oder Ähnliches.
|
|
|
 |
Similar Threads
|
[PHP] SQL 2x Sortieren
11/29/2016 - Web Development - 4 Replies
Guten abend,
bräuchte mal eure hilfe.
Und zwar ich mache gerade eine Ranking liste für einen P-Server, möchte das 2 Sachen Sortiert werden.
Die erste sache währe das Level die 2. die Erfahrungspunkte.
bis jetz hab ich es geschaft das die mit den höchsten Level, auch platz 1.2.3... sind.
|
[S]Jemand der Bilder schön Sortieren Vergrößern kann usw [B]50 E*gold
06/12/2012 - elite*gold Trading - 1 Replies
Hallo
Ich habe ein wichtiges anliegen was ich spätestens in ein paar h haben muss.
Unzwar
Brauche ich zb eine Worldpad datei.. Mit 16 bildern und einer Überschrift.
Diese bilder sollten alle Mittig sein in einer Größe oder halt wie auch immer
|
Zahlen sortieren in C
02/10/2011 - General Coding - 13 Replies
Bräuchte nochmal ein klein bisschen hilfe bei einer C aufgabe.
Ich muss eine zahlenfolge eingeben maximal 20zahlen und diese sortiert ausgeben, aber jeder durchlauf soll angezeigt werden, soweit so gut das programm läuft auch, jedoch hab ich 2 sachen die mich sehr stören
1. Man muss jetzt -1 eingeben wenn man keine zahlen mehr eingeben möchte, bekomme es aber irgendwie nur so hin, fände es besser wenn man am ende enter drückt und fertig ;)
2. Fänd ich es schöner wenn man nicht nach jeder...
|
[C++] Sortieren von zufällig erstellten Arrays.
03/18/2009 - C/C++ - 4 Replies
-
|
taschen sortieren?!
01/14/2007 - World of Warcraft - 1 Replies
tach.
soweit ich weiss gibt es einzellne addons wie bagsort die die taschen inhalte (also items) sortieren. leider funzt das nich mehr >_>
gibt es UIs oda andere addons, die sone funktion beinhalten?
kthnxbye :D
|
All times are GMT +1. The time now is 02:29.
|
|