Java 记分牌代码中的单链表或数组使用什么?

Java 记分牌代码中的单链表或数组使用什么?,java,arrays,singly-linked-list,Java,Arrays,Singly Linked List,我正在用java创建一个程序来存储前10名的最高分数。所以,我在其中使用了数组。我心中有一个疑问,在程序中,什么是单独使用链表还是数组,以避免代码的复杂性,并使程序更高效 private int numEntries = 0; private GameEntry[] board; public Scoreboard(int capacity){ board = new GameEntry[capacity]; } public void add(GameEntry e){

我正在用java创建一个程序来存储前10名的最高分数。所以,我在其中使用了数组。我心中有一个疑问,在程序中,什么是单独使用链表还是数组,以避免代码的复杂性,并使程序更高效

    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;
    }
}
private int numEntries=0;
私人游戏进入【】板;
公共记分牌(国际容量){
棋盘=新游戏条目[容量];
}
公共作废添加(游戏条目e){
int newScore=e.getScore();
if(numEntriesboard[numEntries-1].getScore()){

如果(numEntries0&&board[j-1].getScore()在这种情况下,不需要过多地考虑性能(除非是巨大的数字),您应该编写尽可能清晰、易懂的代码。稍后您可以对其进行调优,但首先要确保其逻辑正确,并且确实需要提高性能

另外,您不需要实现排序,而是使用现有的实用程序

我会这样做:

List arr=new ArrayList();
Comparator cmp=Comparator.comparingit(a->a.getScore());
公共作废添加(游戏条目e){
arr.add(e);
Collections.sort(arr,cmp.reversed());
while(arr.size()>容量){
arr.remove(arr.size()-1);
}
}

在这种情况下,不需要过多地考虑性能(除非是庞大的数字),您应该编写尽可能清晰、易懂的代码。以后您可以对其进行调整,但首先确保其逻辑正确,并且确实需要提高性能

另外,您不需要实现排序,而是使用现有的实用程序

我会这样做:

List arr=new ArrayList();
Comparator cmp=Comparator.comparingit(a->a.getScore());
公共作废添加(游戏条目e){
arr.add(e);
Collections.sort(arr,cmp.reversed());
while(arr.size()>容量){
arr.remove(arr.size()-1);
}
}

在本用例中,数组与列表很难成为效率的瓶颈。请使用最容易写入/读取且最清晰的内容。在本用例中,数组与列表很难成为效率的瓶颈。请使用最容易写入/读取且最清晰的内容。