Open In App

Dart – Generics

Last Updated : 23 Nov, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

In Dart, by default collections are heterogeneous. However, by the use of generics, we can make a collection to hold homogeneous values. The use of Generics makes the use of a single compulsory data type to be held inside the collection. Such collections are called type-safe collections. By the use of generics, type safety is ensured in the Dart language.

Syntax:

Collection_name <data_type> identifier= new Collection_name<data_type> 

We can use List, Set, Map, and Queue generics to implement type safety in Dart.

Generic List

In Dart, a List is simply an ordered group of objects. A list is simply an implementation of an array.

Example:

Dart




main() { 
  List<int> listEx = []; 
  listEx.add(341); 
  listEx.add(1); 
  listEx.add(23); 
    
  // iterating across list listEx 
  for (int element in listEx) { 
     print(element); 
  
}


Output:

341
1
23

 Generic Set

In Dart, a Set represents a collection of objects in which each object can exist only once.

Example:

Dart




main() { 
  Set <int> SetEx = new Set <int>(); 
  SetEx.add(12); 
  SetEx.add(3); 
  SetEx.add(4);
   
  // Already added once, hence wont be added
  SetEx.add(3); 
    
  // iterating across Set SetEx 
  for (int element in SetEx) { 
     print(element); 
  
}


Output:

12
3
4

 

Generic Map

In Dart, Map is a dynamic collection of the key, value pairs.

Example:

Dart




main() { 
   
  // Creating a Map with Name and ids of students
  Map <String,int> mp={'Ankur':1,'Arnav':002,'Shivam':003}; 
  print('Map :${mp}'); 
}


Output:

Map :{Ankur: 1, Arnav: 2, Shivam: 3}

 

Generic Queue

A queue is a collection that is used when the data is to be inserted in a FIFO (First in first out) manner. In Dart, a queue can be manipulated at both ends, i.e. at the start as well as the end of the queue.

Example:

Dart




import 'dart:collection'
 
main() { 
  Queue<int> q = new Queue<int>();   
   
  // Inserting at end of the queue
  q.addLast(1); 
   
  // Inserting at end of the queue
  q.addLast(2); 
   
  // Inserting at start of the queue
  q.addFirst(3);
   
  // Inserting at end of the queue 
  q.addLast(4); 
   
  // Current Queue order is 3 1 2 4.
  // Removing the first element(3) of the queue 
  q.removeFirst(); 
   
  // Iterating over the queue
  for(int element in q){ 
     print(element); 
  
}


Output:

1
2
4


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads