Maps in Dart On this page To demonstrate the usage of maps, which are Dart’s built-in associative data types, we’ll create a translation of the provided code and explanation. Maps in Dart are equivalent to dictionaries in other languages.
void main () {
// Creating an empty map
var m = < String , int > {};
// Setting key/value pairs
m [ 'k1' ] = 7 ;
m [ 'k2' ] = 13 ;
// Printing a map will show all its key/value pairs
print ( 'map: $ m ' );
// Getting a value for a key
var v1 = m [ 'k1' ];
print ( 'v1: $ v1 ' );
// If the key doesn't exist, it returns null
var v3 = m [ 'k3' ];
print ( 'v3: $ v3 ' );
// The number of key/value pairs in the map
print ( 'len: ${ m . length } ' );
// Removing key/value pairs from a map
m . remove ( 'k2' );
print ( 'map: $ m ' );
// Removing all key/value pairs from a map
m . clear ();
print ( 'map: $ m ' );
// Checking if a key is present in the map
var prs = m . containsKey ( 'k2' );
print ( 'prs: $ prs ' );
// Declare and initialize a new map in the same line
var n = { 'foo' : 1 , 'bar' : 2 };
print ( 'map: $ n ' );
// Check if two maps are equal
var n2 = { 'foo' : 1 , 'bar' : 2 };
if ( MapEquality (). equals ( n , n2 )) {
print ( 'n == n2' );
}
}
class MapEquality {
const MapEquality ();
bool equals ( Map a , Map b ) {
if ( a . length != b . length ) return false ;
for ( var key in a . keys ) {
if ( a [ key ] != b [ key ]) return false ;
}
return true ;
}
}
Explanation# To create an empty map in Dart, you can use the literal map syntax:
Set key/value pairs using typical name[key] = val
syntax:
m [ 'k1' ] = 7 ;
m [ 'k2' ] = 13 ;
Printing a map with print(m)
will show all of its key/value pairs:
Get a value for a key with name[key]
:
var v1 = m [ 'k1' ];
print ( 'v1: $ v1 ' );
If the key doesn’t exist, Dart returns null
:
var v3 = m [ 'k3' ];
print ( 'v3: $ v3 ' );
The length
property returns the number of key/value pairs in the map:
print ( 'len: ${ m . length } ' );
The remove
method removes key/value pairs from a map:
m . remove ( 'k2' );
print ( 'map: $ m ' );
The clear
method removes all key/value pairs from a map:
m . clear ();
print ( 'map: $ m ' );
The containsKey
method checks if a key is present in the map:
var prs = m . containsKey ( 'k2' );
print ( 'prs: $ prs ' );
You can also declare and initialize a new map in the same line:
var n = { 'foo' : 1 , 'bar' : 2 };
print ( 'map: $ n ' );
To check if two maps are equal, we can use a custom equality function:
var n2 = { 'foo' : 1 , 'bar' : 2 };
if ( MapEquality (). equals ( n , n2 )) {
print ( 'n == n2' );
}
The MapEquality
class contains a method to check if two maps are equal by comparing their keys and values.