You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中创建自定义索引的列表及多维数组?

嘿,我来帮你解决这两个Dart里的问题!

1. 如何在Dart中创建带有用户自定义索引值的列表?

首先得明确一点:Dart里的List(列表)的索引是固定从0开始的连续整数,没办法直接自定义索引值(比如让第一个元素的索引是5,第二个是10这种)。如果需要自定义索引(不管是整数还是其他类型),咱们应该用Map来实现,它可以把自定义的“索引”(也就是键)和对应的值关联起来。

举个例子,如果你想创建一个以自定义整数为索引的集合:

// 定义一个键为int类型,值为String类型的Map
var customIndexedCollection = <int, String>{};

// 添加自定义索引的元素
customIndexedCollection[5] = "第一个元素";
customIndexedCollection[10] = "第二个元素";
customIndexedCollection[3] = "第三个元素";

// 访问元素
print(customIndexedCollection[5]); // 输出:第一个元素

如果你的“自定义索引”需要保持插入顺序,也可以用LinkedHashMap,它会严格保留元素添加的顺序:

import 'dart:collection';

var orderedCustomCollection = LinkedHashMap<int, String>();
orderedCustomCollection[5] = "first";
orderedCustomCollection[3] = "second";
orderedCustomCollection[10] = "third";

// 遍历的时候会按插入顺序输出
orderedCustomCollection.forEach((key, value) => print("$key: $value"));
// 输出:
// 5: first
// 3: second
// 10: third

当然,如果只是想让展示给用户的“逻辑索引”从非0值开始(比如对外说索引从1开始,但内部还是用List的0索引),那直接用普通List,访问的时候做个偏移就行,比如list[index - 1]。


2. 创建带有自定义外层索引的多维数组

你描述的需求是外层索引为自定义值(不是0、1),内层是普通列表(索引0、1),这种场景同样适合用Map嵌套List来实现。

直接上代码示例:

// 定义外层为自定义int索引,内层为List的Map
var multiDimensionalMap = <int, List<dynamic>>{};

// 先初始化自定义索引对应的内层列表(不初始化直接赋值会报错)
multiDimensionalMap[10] = List.filled(2, null); // 内层列表长度为2,初始值设为null
multiDimensionalMap[20] = List.filled(2, null);

// 按需求赋值
multiDimensionalMap[10][0] = "value1";
multiDimensionalMap[20][1] = "value2";

// 访问元素
print(multiDimensionalMap[10][0]); // 输出:value1
print(multiDimensionalMap[20][1]); // 输出:value2

如果不想提前初始化内层列表,也可以在赋值时动态创建:

var multiDimensionalMap = <int, List<dynamic>>{};

// 当键不存在时,自动创建空列表
multiDimensionalMap[15] ??= [];
multiDimensionalMap[15].add("test value");

// 也可以直接创建指定长度的列表后赋值
multiDimensionalMap[25] = [null, null];
multiDimensionalMap[25][1] = "another value";

这样就能完美实现你需要的arr[index1][0]=value1; arr[index2][1]=value2的效果,其中index1、index2可以是任何你需要的自定义整数。


内容的提问来源于stack exchange,提问作者shubham mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:43:09