本文详细介绍了Java中的Map数据结构,包括添加元素(如addEntries、update、addAll),更新操作(update、updateAll),删除(remove、removeWhere)、查找(putIfAbsent、containsKey、containsValue)以及创建和操作方法(fromIterable、fromIterables、unmodifiable)。
键值对的集合,您可以使用其关联的键从中检索值。
普通的
HashMap
是无序的(不保证顺序),
LinkedHashMap
按键插入顺序迭代,而像
SplayTreeMap
这样的排序映射按排序顺序迭代键。
1,添加元素
addEntries()
final planets = <int, String>{1: 'Mercury', 2: 'Venus',
3: 'Earth', 4: 'Mars'};
final gasGiants = <int, String>{5: 'Jupiter', 6: 'Saturn'};
final iceGiants = <int, String>{7: 'Uranus', 8: 'Neptune'};
planets.addEntries(gasGiants.entries);
planets.addEntries(iceGiants.entries);
print(planets);
2,更新组元素 update()
final planetsFromSun = <int, String>{1: 'Mercury', 2: 'unknown',
3: 'Earth'};
planetsFromSun.update(2, (value) => 'Venus');
print(planetsFromSun);
final largestPlanets = <int, String>{1: 'Jupiter', 2: 'Saturn',
3: 'Neptune'};
largestPlanets.update(8, (value) => 'New', ifAbsent: () => 'Mercury');
print(largestPlanets);
3,更新所有元素的值 updateAll()
final terrestrial = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
terrestrial.updateAll((key, value) => value.toUpperCase());
print(terrestrial);
4,删除指定的元素 removeWhere
final terrestrial = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
terrestrial.removeWhere((key, value) => value.startsWith('E'));
print(terrestrial);
5,查找 [key] 的值,如果不存在,则添加新条目。 putIfAbsent
final diameters = <num, String>{1.0: 'Earth'};
final otherDiameters = <double, String>{0.383: 'Mercury', 0.949: 'Venus'};
for (final item in otherDiameters.entries) {
diameters.putIfAbsent(item.key, () => item.value);
print(diameters);
final result = diameters.putIfAbsent(0.383, () => 'Random');
print(result);
print(diameters);
6,将所有键值对添加到此映射中。 addAll
final planets = <int, String>{1: 'Mercury', 2: 'Earth'};
planets.addAll({5: 'Jupiter', 6: 'Saturn'});
print(planets);
7,从映射中删除 [key] 及其关联值(如果存在)。 remove
final terrestrial = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'
};
final removedValue = terrestrial.remove(2);
print(terrestrial);
8,从映射中移除所有条目。 clear
final planets = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
planets.clear();
9,循环应用于映射的每个键值对。 forEach
final planetsByMass = <num, String>{0.81: 'Venus', 1: 'Earth',
0.11: 'Mars', 17.15: 'Neptune'};
planetsByMass.forEach((key, value) {
print('$key: $value');
});
10,此映射是否包含给定的 [key]。 containsKey
final moonCount = <String, int>{'Mercury': 0, 'Venus': 0, 'Earth': 1,
'Mars': 2, 'Jupiter': 79, 'Saturn': 82, 'Uranus': 27, 'Neptune': 14 };
final containsUranus = moonCount.containsKey('Uranus');
final containsPluto = moonCount.containsKey('Pluto');
11,此映射是否包含给定的 [value]。 containsValue
final moonCount = <String, int>{'Mercury': 0, 'Venus': 0, 'Earth': 1,
'Mars': 2, 'Jupiter': 79, 'Saturn': 82, 'Uranus': 27, 'Neptune': 14 };
final moons3 = moonCount.containsValue(3);
final moons82 = moonCount.containsValue(82);
12,创建一个 Map 实例,其中键和值是从 [iterable] 计算的。 fromIterable
final numbers = <int>[1, 2, 3];
final map = Map<String, int>.fromIterable(numbers,
key: (item) => item.toString(),
value: (item) => item * item);
print(map);
final numbers = <int>[1, 2, 3];
final map = Map.fromIterable(numbers);
print(map);
13,创建一个映射,将给定的 [键] 与给定的 [值] 相关联。 fromIterables
final rings = <bool>[false, false, true, true];
final planets = <String>{'Earth', 'Mars', 'Jupiter', 'Saturn'};
final map = Map<String, bool>.fromIterables(planets, rings);
print(map);
14,创建一个映射,将给定的 [键] 与给定的 [值] 相关联。 unmodifiable
final planets = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
final unmodifiableMap = Map.unmodifiable(planets);
unmodifiableMap[4] = 'Mars';
A Dart implementation of Leaflet for Flutter apps.
一个基于leaflet的地图插件,也就是说flutter_map基于的是瓦片地图,那么在兼容性上可以说比较好用了。
目前主要的地图插件主要有: flutter_map map_view``amap
void main () {
var myApp = MyApp(aMap: {0: Colors.green,1: Colors.lightBlue,2:Colors.pink,3:Colors.purple},);
return runApp(myApp);
class MyApp extends S...
本篇文章对于熟悉 flutter 或者 dart 的小伙伴来说可能觉得比较简单,但是对于初学者或者没用过的小伙伴还是有些收获的。
说到 map 妙用的发现,还要归功于 Tooltip 的研究。
在研究这个 Widget 的时候,看到了它的源码 demo,所以发现了这个 map 的妙用。
那么妙用在哪呢?
我们在上节课说到了 Expanded 的比例布局。
源代码如下:
re...
Flutter —— 聊天界面
首先做的事右上角的按钮,右上角要弄一个menu,那么这里可以在AppBar的actions添加
Flutter封装好的控件PopupMenuButton,用一个container包着调整位置,然后用offset调整自身的位置。
actions: [
Container
(child:
PopupMenuButton
(
itemBuilder:
(BuildContext context
) {
Flutter —— dart基础语法(1)1. Flutter 项目创建2. Dart 语法2.1 var、final和const2.2 num2.3 string2.4 list 和 map2.5 ??= 和 ??2.6 方法 和 箭头函数2.7 方法的可选参数2.8 方法作为参数传递2.9 匿名函数2.10 闭包
1. Flutter 项目创建
Flutter配置完之后,就可以在Android studio 创建 Flutter项目啦,
点击Create New Flutter Project之后,
在这个系列中,我们将学习如何使用google的移动开发框架flutter创建一个电商应用。
本文是flutter框架系列教程的第一部分,将学习如何安装Flutter开发环境并创建第一个
Flutter应用,并学习Flutter应用开发中的核心概念,例如widget、状态等。
本系列教程包含如下四个部分,敬请期待:
如何从零构建flutter应用
如何在flutter中布局元素
如何在flutte...
Flutter在2018 世界移动大会发布第一个beta版本,这是谷歌发布的一套移动UI框架 ,可以快速在iOS和Android上构建高质量的原生用户界面。 能够做到一套代码两个终端运行。并且
Flutter是完全免费、开源的。
Flutter组件采用现代响应式框架构建,这是从React中获得的灵感,中心思想是用组件
(widget
)构建你的UI。 组件描述了在给定其当前配置和状态时他们...
Android Studio安装与配置
https://juejin.cn/post/6844904054569582605
安装Android Studio前,需要先选择安装Java环境,Java需要到Oracle官网上下载安装,需要注册一个Oracle账号。
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
Windows 10 配置Java 环境变量
https://www.runo
flutter --version
Flutter 3.22.0 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 5dcb86f68f (3 months ago) • 2024-05-09 07:39:20 -0500
Engine • revision f6344b75dc
Tools • Dart 3.4.0 • DevTools 2.34.3