簡體   English   中英

如何創建 int 和 list 的 Map?

[英]How do I create a Map of int and list?

我覺得我錯過了一些東西,因為這個問題似乎很容易回答。 但是,我沒有在堆棧溢出或 dart 文檔中找到任何內容。

我試過的:

var list = Map<int, List<int>>();

list[0] = [];

或者

var list = Map<int, List<int>>();

list[0] = List<int> listOne;

文檔沒有多大幫助: https://dart.dev/guides/language/language-tour#maps

類似的問題似乎不存在。

我怎么解決這個問題。 我需要使用解決方法嗎?

問候。

Map int 和列表

var listMapping = Map<int, List<int>>();    
listMapping[0] = [];
listMapping[33] = [12, 0, 345, -23, 999999];
listMapping[45] = List<int>();

listMapping[45].add(101);
listMapping[45].add(109);

print(listMapping[33]);

// A map doesn't store things in a asequencial data structure e.g. List or array
// Hence it doesn't implement Iterable and hence it can not be traversed like below
/*for(List<int> list in listMapping){
   print(list);
}*/

列表列表

如果 integer 鍵在您的情況下只是用於存儲索引並且將始終是連續的,例如 0,1,2,3... 那么更好的解決方案是List of a Lists

var myLists = List<List<int>>()
myLists.add([1,2,45,56,78]);

var aNewList = [22,33,44,55];
myLists.add(aNewList);
Map<int, List<int>> map = Map<int, List<int>> ();
  map[0] = [10,0];
  map[1] = [];

詳細了解 dart 地圖

第一個看起來不錯

我不確定我是否正確理解你,但你的第一次嘗試在 DartPad 中對我有用。 我只將它重命名為 map,因為它是一個包含列表的 map。

var map = Map<int, List<int>>();

map[0] = [];

您也可以將其聲明為 final,因為變量本身不會被重新分配

final map = Map<int, List<int>>();
map[0] = [];

如果對您有幫助,請給它一個類型注釋

final Map<int,List<int>> map = Map<int, List<int>>();

map[0] = [];

第二個代碼段不起作用

var list = Map<int, List<int>>();

//you cannot name a value you want to assign
list[0] = List<int> listOne;

也許這就是你想要的:

var list = Map<int, List<int>>();
final listOne = <int>[];
list[0] = listOne

Map 文字

這是我會做的方式

final map = {0: []};
//or for added clarity 
final Map<int,List<int>> map = <int,List<int>>{0: []};

使用 map 及其鍵 (int) 和值 (List) 進行簡單操作

//assign new array to different keys
map[0] = [0,1,2,3,4];
map[2] = <int>[];
map[4] = <int>[0,3];

//remove all values with an array length smaller than two
map.removeWhere((key,value)=>value.length<2);

//remove value at key 0
map.remove(0);

//clear map
map.clear();

[注意]如果你想將一個全新的 map 重新分配給 map,你必須聲明它不是最終的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM