Java Stack umdrehen ohne Veränderung an Stack 1?
Moin,
ich bin gerade etwas in Java am programmieren und habe 2 Stacks. Den Inhalt möchte ich umdrehen und in den 2. Stack legen. Jedoch ohne, dass der 1. Stack verändert wird.
Kann da jemand helfen?
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Programmiersprache
Du meinst die alte Klasse Stack aus der Standardbibliothek?
Das ist auch eine List, und somit kannst du damit alles tun, was eine List so kann.
Ein möglicher Ansatz:
jshell> var s1 = new Stack<String>()
s1 ==> []
jshell> s1.addAll(List.of("a", "b", "c"))
$16 ==> true
jshell> var s2 = new Stack<String>()
s2 ==> []
jshell> s2.addAll(s1)
$18 ==> true
jshell> Collections.reverse(s2)
jshell> s2
s2 ==> [c, b, a]
Oder du iterierst durch s1 und fügst die Elemente einzeln zu s2 hinzu.
Wobei ich (wie auch die API-Doku) empfehlen würde, statt Stack ein Deque zu verwenden. Das ist ein bisschen angenehmer im Handling. Beispiel:
jshell> var s1 = new ArrayDeque<>(List.of("a", "b", "c"))
s1 ==> [a, b, c]
jshell> var s2 = new ArrayDeque<>();
s2 ==> []
jshell> s1.forEach(s2::addFirst)
jshell> s2
s2 ==> [c, b, a]