Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有按值排序的列表的数据结构?_Java_List_Map_Set - Fatal编程技术网

Java 是否有按值排序的列表的数据结构?

Java 是否有按值排序的列表的数据结构?,java,list,map,set,Java,List,Map,Set,我有一个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,

我有一个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}
};
我希望能够以正确的顺序向这个数组添加一个新的分数(因此,如果它是第三高的,它将被放在索引2)。然后,我将再次将此列表截短到前10名,并更新该表

我知道通过循环和检查来实现这一点很简单,但我想知道是否有一个合适的数据结构更适合按值排序的数据?或者简单的二维数组是唯一的/最好的?

使用带有自定义比较器的


此外,您不应该使用多维数组,使用映射(名称->分数)或自定义对象。嘿,如果您的数组已排序,您可以使用
Collections.binarySearch()
arrays.binarySearch()
方法来指导您在什么索引处进行插入。这些方法的工作方式是对现有元素进行二进制搜索,如果在集合中找不到该元素,它将返回与插入点相关的值。

更多信息请点击此处

+1。很明显,可以编写一个包含十个最高元素的包装列表,但老实说,除非存在严重的性能问题,否则坚持使用内置库是一种方法!太棒了,谢谢。我知道一定有比阵列更好的方法!我猜你的意思是,Collections.binarySearch在列表上工作,而不是数组。虽然我认为他首先应该使用列表,但插入更容易。