Flutter中 List列表中移除特定元素

在 Dart 语言里,若要从子列表中移除特定元素,可以使用以下几种方法,下面为你详细介绍:

方法一:使用 where 方法创建新列表

where 方法会根据指定的条件筛选元素,然后通过 toList 方法将筛选结果转换为新列表。这种方法不会修改原列表,而是返回一个不包含特定元素的新子列表。

dart 复制代码
void main() {
  // 原始列表
  List<int> originalList = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  // 提取子列表,这里提取索引 2 到 6(不包含 6)的元素
  List<int> subList = originalList.sublist(2, 6);
  // 要移除的特定元素
  int elementToRemove = 4;

  // 使用 where 方法筛选出不等于特定元素的元素,并转换为新列表
  List<int> newSubList = subList.where((element) => element != elementToRemove).toList();
  print(newSubList); 
}

在上述代码中,where 方法遍历子列表,只保留那些不等于 elementToRemove 的元素,最后将这些元素组成一个新的列表。

方法二:使用 remove 方法直接修改原列表

remove 方法会直接在原列表中移除第一个匹配的特定元素。如果元素存在于子列表中,它会被移除;如果不存在,列表不会发生变化。

dart 复制代码
void main() {
  List<int> originalList = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  List<int> subList = originalList.sublist(2, 6);
  int elementToRemove = 4;

  // 尝试移除特定元素
  bool removed = subList.remove(elementToRemove);
  if (removed) {
    print("元素移除成功。");
  } else {
    print("元素不在子列表中。");
  }
  print(subList); 
}

此代码中,remove 方法返回一个布尔值,表示是否成功移除元素。可以根据这个返回值判断元素是否存在于子列表中。

方法三:使用 removeWhere 方法移除满足条件的所有元素

removeWhere 方法会移除列表中所有满足指定条件的元素。如果要移除子列表中所有等于特定值的元素,可以使用这个方法。

dart 复制代码
void main() {
  List<int> originalList = [1, 2, 3, 4, 4, 5, 6, 7, 8, 9];
  List<int> subList = originalList.sublist(2, 7);
  int elementToRemove = 4;

  // 移除所有等于特定元素的元素
  subList.removeWhere((element) => element == elementToRemove);
  print(subList); 
}

在这个例子中,removeWhere 方法会遍历子列表,移除所有等于 elementToRemove 的元素。

方法四:使用 retainWhere 方法保留满足条件的元素

retainWhere 方法与 removeWhere 相反,它会保留列表中所有满足指定条件的元素,移除不满足条件的元素。

dart 复制代码
void main() {
  List<int> originalList = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  List<int> subList = originalList.sublist(2, 6);
  int elementToRemove = 4;

  // 保留不等于特定元素的元素
  subList.retainWhere((element) => element != elementToRemove);
  print(subList); 
}

这里 retainWhere 方法会保留子列表中所有不等于 elementToRemove 的元素,移除等于该元素的元素。

相关推荐
ujainu5 小时前
Flutter + OpenHarmony 游戏开发进阶:用户输入响应——GestureDetector 实现点击发射
flutter·游戏·openharmony
hudawei9966 小时前
TweenAnimationBuilder和AnimatedBuilder两种动画的比较
flutter·ui·动画·tweenanimation·animatedbuilder
ujainu6 小时前
Flutter + OpenHarmony 实现无限跑酷游戏开发实战—— 对象池化、性能优化与流畅控制
flutter·游戏·性能优化·openharmony·endless runner
ZH15455891317 小时前
Flutter for OpenHarmony Python学习助手实战:自动化脚本开发的实现
python·学习·flutter
晚烛8 小时前
CANN + 物理信息神经网络(PINNs):求解偏微分方程的新范式
javascript·人工智能·flutter·html·零售
一起养小猫9 小时前
Flutter for OpenHarmony 实战:扫雷游戏完整开发指南
flutter·harmonyos
晚烛9 小时前
CANN 赋能智慧医疗:构建合规、高效、可靠的医学影像 AI 推理系统
人工智能·flutter·零售
晚霞的不甘9 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
小哥Mark11 小时前
Flutter开发鸿蒙年味 + 实用实战应用|绿色烟花:电子烟花 + 手持烟花
flutter·华为·harmonyos
一只大侠的侠12 小时前
Flutter开源鸿蒙跨平台训练营 Day 3
flutter·开源·harmonyos