Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用已排序的字符串值填充空堆栈_Java_Stack_Structure - Fatal编程技术网

Java 用已排序的字符串值填充空堆栈

Java 用已排序的字符串值填充空堆栈,java,stack,structure,Java,Stack,Structure,我有一个字符串值数组(未排序)。我的目标是对这些值进行排序,然后将它们推送到一个空堆栈中。我无法解决的问题是,当我将()具有最低字符的字符串推入堆栈时,我无法找到删除该字符串的方法,以便下次循环迭代时,该字符串不会再次与下一个最低的字符串进行比较。我知道我可能采用了错误的方法,但我认为对于我的数据结构类来说,这是一个很好的练习方法。以下是我的代码: import java.util.*; public class StackClass { public static void main

我有一个字符串值数组(未排序)。我的目标是对这些值进行排序,然后将它们推送到一个空堆栈中。我无法解决的问题是,当我将()具有最低字符的字符串推入堆栈时,我无法找到删除该字符串的方法,以便下次循环迭代时,该字符串不会再次与下一个最低的字符串进行比较。我知道我可能采用了错误的方法,但我认为对于我的数据结构类来说,这是一个很好的练习方法。以下是我的代码:

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);
    }
}
import java.util.*;
公共类StackClass{
公共静态void main(字符串[]args){
堆栈名称=新堆栈();
字符串arr[]={“Camila”、“Zury”、“Diego”,
“加布里埃拉”、“布莱恩”、“费边”、“哈利”、“马丁”、“路易斯”、“安德森”};
字符串minChar;
minChar=arr[0];
对于(inti=1;i
如果要使用字符串数组列表(
ArrayList
),只需使用
remove(item)
函数,因为ArrayList支持动态调整大小

不幸的是,数组的长度是固定的,因此您的案例中的一个选项是删除
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  
        }
if(arr[i].charAt(0)
如果要使用字符串数组列表(
ArrayList
),只需使用
remove(item)
函数,因为ArrayList支持动态调整大小

不幸的是,数组的长度是固定的,因此您的案例中的一个选项是删除
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  
        }
if(arr[i].charAt(0)
公共静态void main(字符串[]args){
字符串名称[]={“彼得”、“帕特丽夏”、“亨特”、“莎拉”,
“盖布”、“吉娜”、“罗布”、“约翰”、“佐伊”、“塔米”、“罗伯特”,
“肖恩”、“帕斯卡尔”、“凯西”、“尼尔”、“瓦尔”};
堆栈=新堆栈();
数组。排序(名称);
for(字符串名称:名称){
stack.push(名称);
}
//试验
for(字符串名称:堆栈){
System.out.println(名称);
}
}
公共静态void main(字符串[]args){
字符串名称[]={“彼得”、“帕特丽夏”、“亨特”、“莎拉”,
“盖布”、“吉娜”、“罗布”、“约翰”、“佐伊”、“塔米”、“罗伯特”,
“肖恩”、“帕斯卡尔”、“凯西”、“尼尔”、“瓦尔”};
堆栈=新堆栈();
数组。排序(名称);
for(字符串名称:名称){
stack.push(名称);
}
//试验
for(字符串名称:堆栈){
System.out.println(名称);
}
}

Arrays.asList(arr).stream().sorted().forEachOrdered(name::add)
Arrays.asList(arr).stream().sorted().forEachOrdered(name::add)这将无法正常工作。将
arr[i]
设置为null应在
for
循环结束后进行。这将无法正常工作。应在
for的
循环结束后,将arr[i]设置为null。