Java > if(stk.peek().compareTo(min)

Java > if(stk.peek().compareTo(min),java,generics,stack,primitive,Java,Generics,Stack,Primitive,请记住,如果您计划在此堆栈中使用自己的类型,则必须使它们具有可比性并实现compareTo方法。所需的行为是什么?不确定您的意思。。。该程序除了将元素推送到堆栈上、检查要推送到堆栈上的最小值、最后一个要推送到堆栈上的值以及从堆栈上弹出元素之外,没有任何内在的用途。那么你的问题是什么?我请求帮助将上述代码转换为使用泛型,而不是原语。这是OP中的第一句话。它已经在使用泛型了。像50这样的基本值是自动装箱并插入到通用堆栈中的。此外,在大多数语言中,泛型可以是基本的,但在Java中不能。或者您正在尝试创

请记住,如果您计划在此堆栈中使用自己的类型,则必须使它们具有可比性并实现compareTo方法。

所需的行为是什么?不确定您的意思。。。该程序除了将元素推送到堆栈上、检查要推送到堆栈上的最小值、最后一个要推送到堆栈上的值以及从堆栈上弹出元素之外,没有任何内在的用途。那么你的问题是什么?我请求帮助将上述代码转换为使用泛型,而不是原语。这是OP中的第一句话。它已经在使用泛型了。像
50
这样的基本值是自动装箱并插入到通用
堆栈中的。此外,在大多数语言中,泛型可以是基本的,但在Java中不能。或者您正在尝试创建一个可以与任何类型一起工作的实现?期望的行为是什么?不确定您的意思。。。该程序除了将元素推送到堆栈上、检查要推送到堆栈上的最小值、最后一个要推送到堆栈上的值以及从堆栈上弹出元素之外,没有任何内在的用途。那么你的问题是什么?我请求帮助将上述代码转换为使用泛型,而不是原语。这是OP中的第一句话。它已经在使用泛型了。像
50
这样的基本值是自动装箱并插入到通用
堆栈中的。此外,在大多数语言中,泛型可以是基本的,但在Java中不能。或者你正在尝试创建一个可以与任何类型一起工作的实现吗?做家庭作业来学习一些东西从来都不是毫无意义的。当一个人自己做作业时,那就是……尽管如此,我还是看到了许多更糟糕的问题,而你的回答涵盖了我自己会提到的所有细节。请允许我投赞成票。请记录在案:这主要是关于措辞。如果你曾经写过“注意java有一个内置的堆栈,重新发明轮子是不好的做法,除非是为了学习”,我不会在一开始就做出讽刺性的评论。重点是,你可以通过指定要使用的类型来创建泛型类型的实例。您可以创建一个
MyStack
和一个
MyStack
,以及一个
MyStack
,但是一旦创建,每个实例都必须使用指定的类型(在
之间)。将整数添加到字符串集合是没有意义的。从技术上讲,通过使用包装器和泛型方法构建这样的泛型是可能的,但对于集合来说,这通常没有多大意义。也有例外在这种情况下,目的是我们可以创建我们需要的任何类型的堆栈,而不必为我们正在使用的特定类型的值实现一个堆栈。它实际上与原始值无关,而是与我们被允许的具体程度和一般程度有关。尽可能的通用是好的,像
Push
Pop
这样的操作不依赖于泛型类型,只要它是已知的。当我们在
MyStack=new MyStack()中指定它时就知道了。简而言之,输入安全的代码重用。做家庭作业来学习一些东西从来都不是毫无意义的。当一个人自己做作业时,那就是……尽管如此,我还是看到了许多更糟糕的问题,而你的回答涵盖了我自己会提到的所有细节。请允许我投赞成票。请记录在案:这主要是关于措辞。如果你曾经写过“注意java有一个内置的堆栈,重新发明轮子是不好的做法,除非是为了学习”,我不会在一开始就做出讽刺性的评论。重点是,你可以通过指定要使用的类型来创建泛型类型的实例。您可以创建一个
MyStack
和一个
MyStack
,以及一个
MyStack
,但是一旦创建,每个实例都必须使用指定的类型(在
之间)。将整数添加到字符串集合是没有意义的。从技术上讲,通过使用包装器和泛型方法构建这样的泛型是可能的,但对于集合来说,这通常没有多大意义。也有例外在这种情况下,目的是我们可以创建我们需要的任何类型的堆栈,而不必为我们正在使用的特定类型的值实现一个堆栈。它实际上与原始值无关,而是与我们被允许的具体程度和一般程度有关。尽可能的通用是好的,像
Push
Pop
这样的操作不依赖于泛型类型,只要它是已知的。当我们在
MyStack=new MyStack()中指定它时就知道了。简而言之,类型安全代码重用。
import java.io.*;
import java.util.*;

public class LinkedListStack {

    public static Stack<Integer> stk = new Stack<Integer>();
    public static int min, push, top;

    public static void main(String[] args) {        

        //initialize random integer generator
        Random rand = new Random();

        System.out.println("Stack empty --> top = null, min = null");
        stackPush(rand.nextInt(50));

        //first value in the stack is the minimum until a smaller integer is pushed
        min = stk.peek();

        stackPush(rand.nextInt(50));
        stackPush(rand.nextInt(50));
        stackPop();
        stackPush(rand.nextInt(50));
        stackPush(rand.nextInt(50));
        stackPush(rand.nextInt(50));
        stackPush(rand.nextInt(50));
        stackPop();
        stackPop();
        stackPop();
        stackPop();
        stackPop();
        stackPop();
        stackPop();

        if (!stk.isEmpty()) {
            System.out.print("\nFinal stack: ");
            for(int x : stk) {
                System.out.print(x + " ");
            }
        } else {
            System.out.print("\nStack is empty!");
        }

        System.out.println();
    }

    public static int stackPush(int pushInt) {
        try {
            stk.push(pushInt);
            if (stk.peek() < min) {
                min = stk.peek();
            }
            top = stk.peek();
            System.out.println("Push " + pushInt + " --> top = " + top +  ", min = " + min);

        } catch (EmptyStackException e){
            System.out.println("ERROR");
        }

        return pushInt;
    }

    public static void stackPop() {
        try {
            stk.pop();
            if (stk.peek() < min) {
                min = stk.peek();
            }
            top = stk.peek();
            System.out.println("Pop --> top = " + top +  ", min = " + min);

        } catch (EmptyStackException e) {
            System.out.println("Stack already empty!");
        }
    }
}
class MyStack<E> {    
    private final Stack<E> wrapped = new Stack<E>();

    public void push(E element) {
        wrapped.push(e);
    }

    public E pop() {
        return wrapped.pop();
    }
}


public class Program {

     public static void main(String[] args) {        

     System.out.println("Stack empty --> top = null, min = null");

     MyStack<String> stack = new MyStack<>();

     stack.push("hello");

     stack.push("world");
}
public class LinkedListStack<T extends Comparable<T>> {
    public static Stack<T> stk = new Stack<T>();
    public static T min, push, top;
 if (stk.peek().compareTo(min) < 0) {
            min = stk.peek();
 }