我有一个JTable显示了游戏的前10个分数。数据结构如下所示:
// {Position, Name, Score}
Object[][] data = {
{1, "-", 0},
{2, "-", 0},
{3, "-", 0},
{4, "-", 0},
{5, "-", 0},
{6, "-", 0},
{7, "-", 0},
{8, "-", 0},
{9, "-", 0},
{10, "-", 0}
};
我希望能够以正确的顺序为此数组添加新分数(因此,如果它是第3高,则将其放在索引2处)。然后,我将再次将此列表截断到前10名并更新表格。
我知道通过循环和检查这是微不足道的,但我想知道是否有一个更适合数值排序的数据的适当数据结构?或者简单的二维数组是唯一/最好的吗?
答案 0 :(得分:5)
将TreeSet
与自定义比较器一起使用。
此外,您不应使用多维数组,使用地图(名称 - >分数)或自定义对象
答案 1 :(得分:3)
嘿,如果您的数组已排序,您可以使用Collections.binarySearch()
或Arrays.binarySearch()
方法指导您在哪个索引处进行插入。这些方法的工作方式是在现有元素之后进行二进制搜索,如果在集合中找不到该元素,它将返回与插入点相关的值。
更多信息Collections.binarySearch