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 的元素,移除等于该元素的元素。

相关推荐
穆梓兰煊16 小时前
Flutter端云协同推理架构解析
flutter·github
FungLeo19 小时前
成为全栈·Flutter App 篇·内置 WebView:网页历史、App 返回与外链安全
flutter·网络安全·移动开发·webview·路由管理·成为全栈
m0_7381858221 小时前
Flutter 鸿蒙化实战:volume_controller 适配 OpenHarmony,系统音量控制
flutter·华为·harmonyos·鸿蒙
FungLeo21 小时前
成为全栈·Flutter App 篇·Flutter Markdown 阅读器:支持范围与渲染边界
flutter·markdown·dart·代码高亮·成为全栈·移动阅读
m0_7381858221 小时前
Flutter 鸿蒙化实战:webview_cookie_manager 适配 OpenHarmony,WebView Cookie 管理
flutter·华为·harmonyos·鸿蒙
FungLeo1 天前
成为全栈·Flutter App 篇·服务端目录与文章辅助阅读:锚点、上下篇、浏览量和阅读历史
flutter·锚点·阅读体验·成为全栈·markdown目录·api契约
恋猫de小郭1 天前
Flutter Android 改动:APK 不再允许通过 Intent 动态修改 Engine 参数
android·前端·flutter
小 黄 鸡1 天前
Flutter 面试必会知识点详解(从基础到进阶)
flutter·面试·职场和发展
大龄秃头程序员2 天前
Flutter 最少代码验证:为什么子 Isolate 调原生,一定要先回到主 Isolate?
flutter
FungLeo2 天前
成为全栈·Flutter App 篇·分类、标签与搜索:移动端内容发现
flutter·移动开发·标签·搜索·分类管理·成为全栈