Эквивалентная функция для .push() в Java?

#java

#java

Вопрос:

Я пытаюсь создать динамический массив с объектами внутри. Мне нужна функция, эквивалентная функции .push() в Javascript, но на Java. Ошибки возникают в pipe.push(new Pipe()) внутри функции setup.

 Bird bird;
Pipe[] pipe;
boolean keyDown = false;

  void setup() {
    size(800, 800);
    frameRate(60);
    bird = new Bird();
    pipe.push(new Pipe()); 
  }

  //------------------------------------------------------------

  void draw() {
    background(0);


    bird.gravity();
    bird.show();
    bird.edge();

  }

  //-----------------------------------------------------------

  void keyPressed(KeyEvent e) {
    if(e.getKeyCode() == 32) {
      if(keyDown == false) {
        bird.jump();
        keyDown = true;
      }
    }
  }

  void keyReleased() {
    keyDown = false;
  }

  //-----------------------------------------------------------------
  

Комментарии:

1. Не могли бы вы поделиться текущим кодом Java, который у вас есть?

2. Для массивов или списков? Для массивов вы не можете; они имеют статический размер. Для списков используйте add .

3. Теперь, когда вы опубликовали свой код, вы не можете push использовать массив в java. Возможно, вам лучше подойдет List . Кроме того, ваш массив даже не инициализирован, поэтому, даже если бы у массивов был такой метод, это все равно не сработало бы.

4. ‘Ошибки’. Какие ошибки?

Ответ №1:

Массивы в Java arrays имеют фиксированный размер. вы должны указать размер, а затем не можете их развернуть. К сожалению, для изменения размера вам нужно объявить новый массив.

Но, к счастью, Java предоставляет разные структуры данных, например, list, set, которые могут динамически увеличиваться по мере увеличения размера.

например

     ArrayList<Pipe> pipes = new ArrayList();

    pipes.add(new Pipe()); 
    pipes.add(new Pipe()); 


for(Pipe pipe : pipes){
   pipe.update();
}
  

Комментарии:

1. Если вы собираетесь использовать Arraylist, вы можете использовать что-то вроде этого —

Ответ №2:

Здесь:

 pipe.push(new Pipe()); 
  

просто невозможно в Java. В Java массив имеет фиксированный размер. Вы не можете динамически добавлять / удалять слоты.

Если вам это нужно, вы можете использовать, например, List / AbstractList.

Помимо этого, реальный ответ здесь таков: не начинайте с предположения, что Java имеет какое-либо отношение к JavaScript. Итак, когда вы думаете «давайте использовать массивы в Java», начните с изучения того, как Java обрабатывает массивы. Не думайте, что там есть что-то похожее на JavaScript.