list - 从列表中创建子列表并将所有子列表添加到 Flutter 的一个列表中
问题描述
任何人都可以帮助我列出概念吗?我有一个名称列表,我想用相同的字母制作单词的子列表,然后将所有这些子列表添加到列表中。这是我的代码:
List<String> items = [
'one',
'two',
'three',
'four',
'five',
'six',
'seven',
'eight',
'nine',
'ten'
];
List<String> sublist;
@override
void initState() {
super.initState();
//----- sort alphabetically
items.sort((a, b) =>
a.toString().toLowerCase().compareTo(b.toString().toLowerCase()));
//----- get the initials
sublist = items.map((element) => element[0]).toList();
//----- remove duplicates
sublist = sublist.toSet().toList();
// ---------------- generate lists
List s = [];
List<List> listOfLists = [];
sublist.forEach((letter) async {
items.forEach((item) =>
item.startsWith(letter) ? s.add(item) : {items.iterator.moveNext()});
listOfLists.add(s);
print(letter);
print(s);
s.clear();
});
print(listOfLists);
这就是我想从 listOfList 得到的:[ [八],[五,四],[九],[一],[七,六],[十,三,二]]但我只得到空的子列表:这是我的结果:在此处输入图像描述
解决方案
您正在清除每次迭代中的列表。
删除 s.clear() 并将 List s = [] 移到 for each 函数中
// ---------------- generate lists
List<List> listOfLists = [];
sublist.forEach((letter) async {
List s = [];
items.forEach((item) => item.startsWith(letter) ? s.add(item) : {items.iterator.moveNext()});
listOfLists.add(s);
print(letter);
print(s);
});
无论如何,我建议您不要在另一个 forEach 中使用 forEach
然后你可以使用:
List<List> listOfLists = [];
sublist.forEach((letter) async {
List s = items.where((item) => item.startsWith(letter)).toList();
listOfLists.add(s);
});
推荐阅读
- javascript - 角材料表动态行
- c - 使用指针在内存中迭代结构块
- reactjs - npm ERR 这可能不是 npm 的问题。上面可能有额外的日志输出
- java - 使用 Jackson 流式传输内部 JSONArray 记录,避免内存收集
- python - Python 在 Kali Linux Selenium 目录中找不到 Firefox Webdriver
- python-3.x - 如何使用 face_recognition 计算员工的活跃时间以进行考勤跟踪
- python - 使用 Flask (Python) 从 MySQL 数据库中获取“一些”数据
- python - Beautifulsoup 找不到标签
- redis - Drupal8设置redis键TTL
- android - 通过网络调用验证 android 中的 URL