Что следует использовать в списке кодов табло для односвязного списка или массива? - PullRequest
1 голос
/ 08 октября 2019

Я создаю программу в java для хранения 10 лучших результатов. Итак, я использую Array в нем. У меня есть вопрос, стоит ли использовать в программе односвязный список или массив, чтобы избежать сложности кода и сделать программу более эффективной.

    private int numEntries = 0;
private GameEntry[] board;
public Scoreboard(int capacity){
    board = new GameEntry[capacity];
}
public void add(GameEntry e){
    int newScore = e.getScore();
    if(numEntries<board.length||newScore>board[numEntries-1].getScore()){
        if(numEntries<board.length){
            numEntries++;
        }
        int j=numEntries-1;
        while(j>0&&board[j-1].getScore()<newScore){
            board[j]=board[j-1];
            j--;
        }
        board[j]=e;
    }
}

1 Ответ

0 голосов
/ 08 октября 2019

В таких случаях не нужно слишком много думать о производительности (если это не огромные цифры), вы должны писать как можно более понятный и понятный код. Позже вы можете настроить его, но сначала убедитесь, что он логически корректен и вам действительно нужно улучшение производительности.

Также вам не нужно реализовывать сортировку, используйте существующие утилиты.

Я бы сделал этокак это:

List<GameEntry> arr = new ArrayList<>();
Comparator<GameEntry> cmp = Comparator.comparingInt(a -> a.getScore());

public void add(GameEntry e) {
  arr.add(e);
  Collections.sort(arr, cmp.reversed());
  while(arr.size() > capacity) {
    arr.remove(arr.size()-1);
  }
}

...