您如何 access/modify 在 Haxe 的列表中指定特定元素?

How do you access/modify specific elements in a List in Haxe?

我是 Haxe 的新手,我正在寻找与 Java 的 ArrayList 等效的数据结构,它是可调整大小和索引的。 Haxe 的 List 只允许访问它的第一个和最后一个元素。

这是我的用例:

我有一张 class Deck 代表一副 52 张扑克牌。 Card 类型的对象存储在 List<Card>.

class Deck {
    var cards:List<Card>;

    public function new() {}

    public function init() {
        cards = new List<Card>();
        for (i in 1...5) { // iterate over suits
            for (j in 1...14) { // iterate over values
                cards.add(new Card(j, SuitFunctions.toSuit(i)));
            }
        }
    }
}

现在我想实现一个洗牌的功能shuffle

public function shuffle() {
    var j:Int, k:Int;
    var c:Card;
    for (i in 1...1000000) {
        j = Std.random(cards.length);
        k = Std.random(cards.length);
        c = getCardAt(j);
        setCardAt(j, getCardAt(k));
        setCardAt(k, c);
    }
}

但是 Haxe 中的 Lists 没有被索引。我将如何实现函数 getCardAt(Int)setCardAt(Int, Card)?签名应该是这样的:

function getCardAt(i:Int):Card {
    // ToDo
    return new Card(0, Suit.ERROR);
}

function setCardAt(i:Int, c:Card) {
    // ToDo
}

或者,是否有更适合这种情况的不同数据结构?例如 Array 是否可以在 Haxe 中调整大小和索引?

此致。

I am looking for an equivalent data structure to Java's ArrayList, which is resizable and indexed.

Array 是你想要的,它们是“动态数组”,所以它们会自动调整大小。

List是一个链表,用的不多