Стек с параметрами типа в Java - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь заставить стек работать ближе к последней Java (Java 13).

Что-то вроде:

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

Полученное сообщение об ошибке

Тип Stack не принимает параметры

Однако все примеры, которые я видел в Интернете, имеют параметры.

Как мне построить (не -примитивный) стек?

===== ++ =========

Приложение:

Итак, я получил его нормально import:

import java .util.Stack;

, что странно, потому что у меня уже был импорт:

import java .util. *;

Как бы то ни было, я не буду больше разбираться с тем, как он работает сейчас.

1 Ответ

0 голосов
/ 15 апреля 2020

Я бы не стал дурачиться с библиотекой, потому что то, что вы делаете, часто требует специальных потребностей. Гораздо лучше создать стек, который будет выполнять именно то, что вам нужно, вместо того, чтобы пытаться «забить» библиотеку, чтобы придать ей полезную форму. Ниже приведена типичная реализация стека в Java. В настоящее время он настроен для хранения целочисленных значений, но если я хочу, например, содержать строки, я просто настраиваю его.

public class Utility_Stack {
    final static int DEFAULT_Capacity = 1000;
    int capacity = 1000;
    int xTop = 0;
    String[] aString;
    int[] aInt;
    double[] aDouble;
    private Utility_Stack(){}
    public static Utility_Stack create(){
        Utility_Stack stack = new Utility_Stack();
        stack.aInt = new int[ DEFAULT_Capacity ];
        return stack;
    }
    public void push( int item ){
        xTop++;
        if( xTop >= capacity ){
            int iNewCapacity = capacity * 7 / 5;
            int[] new_stack = new int[ iNewCapacity + 1 ];
            System.arraycopy( aInt, 0, new_stack, 0, aInt.length );
            aInt = new_stack;
            capacity = iNewCapacity;
        }
        aInt[ xTop ] = item;
    }
    public int peek(){ return aInt[ xTop ]; }
    public int pop(){
        int top = aInt[ xTop ];
        aInt[ xTop ] = Integer.MIN_VALUE;
        if( xTop > 0 ) xTop--;
        return top;
    }
    public void reset(){ xTop = 0; }
    public boolean isEmpty(){ return xTop == 0; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...