Java 在其他数组中移动数组中的元素

Java 在其他数组中移动数组中的元素,java,arrays,Java,Arrays,我正在制作一个跟踪比赛的程序。我希望能够将一场比赛从过去的位置移开一定数量的赛点,然后让中间的所有东西向下移动 我有一系列的“回合”,每个“回合”都有一系列的“种族” Round[]rounds={new Round(),new Round(),new Round()} 每轮比赛都有一系列比赛 Race[]races={new Race(),new Race(),new Race()} 我也可以这样表示: 0.0,0.1,0.2;1.0, 1.1, 1.2; 2.0、2.1、2.2 我想将0.2

我正在制作一个跟踪比赛的程序。我希望能够将一场比赛从过去的位置移开一定数量的赛点,然后让中间的所有东西向下移动

我有一系列的“回合”,每个“回合”都有一系列的“种族”

Round[]rounds={new Round(),new Round(),new Round()}

每轮比赛都有一系列比赛

Race[]races={new Race(),new Race(),new Race()}

我也可以这样表示:

0.0,0.1,0.2;1.0, 1.1, 1.2; 2.0、2.1、2.2

我想将
0.2
对象向前移动3点,在
1.2
2.0
之间。请记住,这样做将在数组之间移动对象,因此必须在三个数组之间移动所有对象。所以在移动之后会是这样的:

0.0,0.1,1.0;1.1, 1.2, 0.2; 2.0、2.1、2.2


同样,这是在数组之间移动对象,而不是在同一个数组中移动对象。

一个选项可能只是在顶级类中有两个数组:第一个是包含所有种族的种族数组:

Race[] races = {new Race(), ...};
另一个是每轮起跑比赛的一系列标志。在您的示例中,它将是:

int[] roundStartIndicies = {0, 3, 6};
然后移动比赛变得容易多了。当你想要获得轮次时,你也可以很容易地做到。例如,如果你想在第二轮比赛中获得第二场比赛,你可以这样做

races[roundStartIndicies[1] + 1]
有时,以一维的方式看待二维问题有助于使代码更清晰


编辑:这取决于您访问数据的方式,但您可能希望按照HUSTMPHRR的建议将比赛设置为链接列表。但是,您会丢失对比赛的恒定时间随机访问。

以下是您可以做的事情。这是您直接问题的解决方案,请查看其他可能更简单、更有效的解决方案的注释

您可以组织一个数组数组(基本上是一个矩阵),这样外部数组的每个索引都对应于您的一个数组:

index
  0    [0.0, 0.1, 0.2]
  1    [1.0, 1.1, 1.2]
  2    [2.0, 2.1, 2.2]
现在我们必须转移数据。可以这样做:

  • 将要移动的元素保存到临时变量中
  • 移动要从中移动元素的数组中的所有数据
  • 将数组中的所有数据在要从中移动到的数组和要移动到的数组之间移动
  • 将元素移动到的数组中的所有数据移位
  • 将保存的元素从临时变量存储到适当的位置
  • 代码:

    关于输入:

    | 0.0 0.1 0.2 |
    | 1.0 1.1 1.2 |
    | 2.0 2.1 2.2 |
    
    产生输出:

    | 0.0 0.1 1.0 |
    | 1.1 1.2 0.2 |
    | 2.0 2.1 2.2 |
    

    我想,在给定的必需操作中,您需要一个链表,而不是数组或2D数组。如果您可以指定一轮中包含多少比赛,并且您需要始终移动比赛,请尝试我的方法。我想您可能希望保持对各个回合的不同引用。在这种情况下,您不需要所有回合中所有比赛的单一链接列表。但是,将回合和比赛的数组更改为列表将有助于您以列表的形式记账。添加(0)将自动处理向上推现有条目索引的操作。删除的工作方式相同,因此,您只需从一个列表中删除,然后添加到另一个列表中,就可以很容易地在两轮之间移动比赛。@HuStmpHrrr我不会一直这样做,只是为了防止赛车手没有准备好,我可以将其移动到以后。@JDS您的意思是,转换此数组
    0.0,0.1,0.2;1.0, 1.1, 1.2; 2.0、2.1、2.2是否合并为一个列表``0.0,0.1,0.2,1.0,1.1,1.2,2.0,2.1,2.2`然后移动比赛。然后再转换回数组?好吧,如果你想模拟真实的比赛,我可以假设这是一个工作流程,在这种情况下,链表可以很好地工作,并在O(1)中解决你的问题。我想这就是我要寻找的,让我回家后尝试一下。
    
    | 0.0 0.1 0.2 |
    | 1.0 1.1 1.2 |
    | 2.0 2.1 2.2 |
    
    | 0.0 0.1 1.0 |
    | 1.1 1.2 0.2 |
    | 2.0 2.1 2.2 |