2017-09-30 1 views
1

文字列値の配列(ソートされていません)があります。そして、私の目標は、それらの値を並べ替え、それらを空のスタックにプッシュすることです。私が解決できない問題は、スタックに最も低い文字の文字列をpush()したときに、その文字列を削除する方法が見つからないため、次回のループが繰り返されるため、次に低い。私は間違ったアプローチを通過することができる知っているが、私はそれが私のデータ構造class.hereのために練習する良い方法だと思うことは私のコードです:あなたは、文字列の配列リストを(使用した場合空のスタックにソートされた文字列値を入力します。

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()ソート()forEachOrdered(名::追加);。。' –

答えて

0

ArrayList<String>)、ArrayListsが動的サイジングをサポートするので、remove(item)関数を使用することができます。

残念ながら、配列の長さは固定されているため、オブジェクト参照をarr[i]から削除することができます。例えば

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

これは正しく動作しません。 'for'ループの終了後に' arr [i] 'をヌルに設定する必要があります。 – 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); 
    } 
} 
関連する問題