Multidimensional Collections in Java
Last Updated :
13 Sep, 2022
In Java, we have a Collection framework that provides functionality to store a group of objects. This is called a single-dimensional ArrayList where we can have only one element in a row. Geek but what if we want to make a multidimensional ArrayList, for this functionality for which we do have Multidimensional Collections (or Nested Collections) in Java.
Multidimensional Collections (or Nested Collections) is a collection of groups of objects where each group can have any number of objects dynamically. Hence, here we can store any number of elements in a group whenever we want.
Illustration:
Single dimensional ArrayList :
[121, 432, 12, 56, 456, 3, 1023]
[Apple, Orange, Pear, Mango]
Syntax:
ArrayList <Object> x = new ArrayList <Object>();
Need for Multidimensional Collections
Unlike Arrays, we are not bound with the size of any row in Multidimensional collections. Therefore, if we want to use a Multidimensional architecture where we can create any number of objects dynamically in a row, then we should go for Multidimensional collections in java.
Syntax: Multidimensional Collections
ArrayList<ArrayList<Object>> a = new ArrayList<ArrayList<Object>>();
Illustration:
Multidimensional ArrayList: [[3, 4], [12, 13, 14, 15], [22, 23, 24], [33]]
Let us quickly peek onto add() method for multidimensional ArrayList which are as follows:
- boolean add( ArrayList<Object> e): It is used to insert elements in the specified collection.
- void add( int index, ArrayList<Object> e): It is used to insert the elements at the specified position in a Collection.
Example 1:
Java
import java.util.*;
class GFG {
static List create2DArrayList()
{
ArrayList<ArrayList<Integer> > x
= new ArrayList<ArrayList<Integer> >();
x.add( new ArrayList<Integer>());
x.get( 0 ).add( 0 , 3 );
x.add(
new ArrayList<Integer>(Arrays.asList( 3 , 4 , 6 )));
x.get( 1 ).add( 0 , 366 );
x.get( 1 ).add( 4 , 576 );
x.add( 2 , new ArrayList<>(Arrays.asList( 3 , 84 )));
x.add( new ArrayList<Integer>(
Arrays.asList( 83 , 6684 , 776 )));
x.add( new ArrayList<>(Arrays.asList( 8 )));
x.get( 4 ).addAll(Arrays.asList( 9 , 10 , 11 ));
x.get( 1 ).addAll( 3 , Arrays.asList( 22 , 1000 ));
return x;
}
public static void main(String args[])
{
System.out.println( "2D ArrayList :" );
System.out.println(create2DArrayList());
}
}
|
Output
2D ArrayList :
[[3], [366, 3, 4, 22, 1000, 6, 576], [3, 84], [83, 6684, 776], [8, 9, 10, 11]]
Now let us see the same implementation of multidimensional LinkedHashSet and in order to show how it behaves differently. Similarly, we can implement any other Collection as Multidimensional Collection as depicted below:
Syntax:
HashSet< HashSet<Object> > a = new HashSet< HashSet<Object> >();
Note: LinkedHashSet class contains unique elements & maintains insertion order. Therefore, in Multidimensional LinkedHashSet uniqueness will be maintained inside rows also.
Example 2:
Java
import java.util.*;
class GFG {
static Set create2DLinkedHashSet()
{
LinkedHashSet<LinkedHashSet<String> > x
= new LinkedHashSet<LinkedHashSet<String> >();
x.add( new LinkedHashSet<String>(
Arrays.asList( "Apple" , "Orange" )));
x.add( new LinkedHashSet<String>(Arrays.asList(
"Tea" , "Coffee" , "Milk" , "Coffee" , "Water" )));
x.add( new LinkedHashSet<String>(
Arrays.asList( "Tomato" , "Potato" , "Onion" )));
x.add( new LinkedHashSet<String>(
Arrays.asList( "Tomato" , "Potato" , "Onion" )));
return x;
}
public static void main(String[] args)
{
System.out.println( "2D LinkedHashSet :" );
System.out.println(create2DLinkedHashSet());
}
}
|
Output
2D LinkedHashSet :
[[Apple, Orange], [Tea, Coffee, Milk, Water], [Tomato, Potato, Onion]]
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...