gpt4 book ai didi

java - 当位置很重要时,Array 与 ArrayList

转载 作者:行者123 更新时间:2023-11-29 05:33:10 25 4
gpt4 key购买 nike

我是一个 Java 新手,有一个快速的 Array vs. ArrayList 问题。我有一个可以增大或减小大小的对象数组,但保持它们在数组中彼此相对的位置对我来说非常重要。我在想,因此我需要使用 Array 而不是 ArrayList,如果删除/添加元素,它可以压缩/移动元素。

实际示例:在我努力学习这种语言的细微差别的第一个 Java 应用程序中,我制作了一个基本的扑克游戏模拟器。我在一个数组中有 Player 对象,代表他们所坐的座位,在旋转之前知道经销商按钮(索引)的放置位置很重要。从 ArrayList 中删除或添加玩家将更改玩家的索引,这可能会导致下一个玩家无法获取它。经销商按钮的移动是非常特定于玩家放置的。

长话短说 - 使用数组是处理数组类型结构中需要保持其在数组中位置的元素的最佳方式吗?有没有更好的方法或逻辑来完成这个?对于这个简单的问题,我深表歉意,但我找不到任何其他替代方案,并想确认这是最好的选择。

编辑:

为了进一步说明,让我举一个例子来说明为什么 ArrayList 的元素移动不起作用:在数组中取三个玩家和他们的索引:

0:玩家一号(经销商按钮)1:玩家二2:三号玩家

如果玩家二(索引一)在庄家按钮轮换之前离开牌 table ,根据规则,玩家一将保留按钮并且盲注将相应地调整(还有其他变体这条规则,但我喜欢使用的那个)。在 ArrayList 中,内部数组将被压缩,玩家 3 最终将比他应该获得的按钮多一轮。我需要跟踪在手牌期间处于 Activity 状态但在回合结束和按钮移动之前被清空的空位。

我开始意识到“座位”的概念会变得更加复杂,我需要跟踪它的状态,包括“玩家在手牌进行时刚刚坐下”、“玩家在手牌时起身”进行中”等。@Stephen P - 我认为你是对的,我将需要单独跟踪它们并且不能使用简单的数组结构来确定逻辑。添加和/或删除元素的时间对于应用程序逻辑至关重要,仅检查元素是否存在并不能解决问题。

对于 Seats 本身,我正在学习 ArrayList,因为 Seats 现在总是在那里,没有空位。如果有人坐在那里以及当玩家到达时,Seat 将只引用 Player 对象。谢谢大家!

最佳答案

使用 ArrayList,您可以使用 set(int index, T value) 让您的玩家坐稳。您只需要先用空值填充 arrayList:

List<Player> seats = new ArrayList<>(Collections.nCopies(numPlayers,(Player)null));
seats.set(2,player); // Place a player in the third chair
seats.set(1,null); // Empty the second chair

关于java - 当位置很重要时,Array 与 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com