2017-09-30 2 views
1

Ich habe eine Reihe von Zeichenkettenwerten (unsortiert). Und mein Ziel ist es, diese Werte zu sortieren und dann() in einen leeren Stapel zu schieben. Das Problem, das ich nicht lösen kann, ist, dass wenn ich die Zeichenkette mit dem niedrigsten Zeichen in meinen Stapel push(), ich den Weg nicht finde, diese Zeichenkette zu entfernen, damit die nächste Schleife nicht wiederholt wird der nächstniedrigste. Ich weiß, ich kann durch den falschen Ansatz gehen, aber ich denke, es ist eine gute Möglichkeit für meine Datenstruktur class.here zu üben ist mein Code:ein leerer Stapel mit sortierten String-Wert

import java.util.*; 

public class StackClass { 
    public static void main(String[] args) { 
     Stack<String> name = new Stack<String>(); 
     String arr[] = {"Camila", "Zury", "Diego", 
     "Gabriela","Brian","Fabian", "Harry","Martin", "Luis", "Anderson",};  
     String minChar; 
     minChar= arr[0]; 
     for (int i = 1; i < arr.length; i++) { 
      if(arr[i].charAt(0) < minChar.charAt(0)) {// to compare the lowest char  
       minChar = arr[i]; //lowest char = minChar 
      } 
     } 
     name.push(minChar); //minChar is pushed into the stack. 
     System.out.println(name); 
    } 
} 
+0

'Arrays.asList (arr) .stream()() sortiert forEachOrdered (Name :: hinzufügen)..' –

Antwort

0

Wenn Sie eine Array Liste der Zeichenfolge verwenden waren (ArrayList<String>), können Sie einfach die Funktion remove(item) verwenden, da ArrayLists dynamische Größenanpassung unterstützt.

Leider Arrays sind fester Länge, so dass eine Option für Ihren Fall ist die Objektreferenz von arr[i] zu entfernen. zB

if(arr[i].charAt(0) < minChar.charAt(0)) {// to compare the lowest char  
      minChar = arr[i]; //lowest char = minChar 
      arr[i] = null; //this will remove the object reference but not resize the array 
     } 
+0

Dies wird nicht richtig funktionieren. Das Setzen von 'arr [i]' auf null sollte erfolgen, nachdem die for-Schleife beendet ist. – c0der

0
public static void main(String[] args) { 

    String names[] = { "Peter", "Patricia", "Hunter", "Sarah", 
      "Gabe", "Gina", "Rob", "John", "Zoey", "Tammy", "Robert", 
      "Sean", "Paschal", "Kathy", "Nill", "Val" }; 
    Stack<String> stack = new Stack<>(); 

    Arrays.sort(names); 

    for (String name: names) { 
     stack.push(name); 
    } 

    //test 
    for (String name: stack) { 
     System.out.println(name); 
    } 
}