Java 多维集合

Java 多维集合

在Java中,我们有一个集合框架,提供了存储一组对象的功能。这就是所谓的单维ArrayList,我们在一行中只能有一个元素。但如果我们想做一个多维ArrayList,对于这个功能,我们在Java中确实有 多维集合(或嵌套集合)

多维集合(或嵌套集合)是一个对象组的集合,每个组可以动态地拥有任意数量的对象。因此,在这里我们可以随时在一个组中存储任何数量的元素。

Java中的多维集合

示例

**Single dimensional ArrayList :**
  [121, 432, 12, 56, 456, 3, 1023]
  [Apple, Orange, Pear, Mango]

语法

ArrayList <Object> x = new ArrayList <Object>();

对多维集合的需求

与数组不同,在多维集合中我们不受任何行的大小限制。因此,如果我们想使用一个多维结构,可以在一行中动态地创建任何数量的对象,那么我们应该在java中使用多维集合。

语法 :多维集合

ArrayList<ArrayList<Object>> a = new ArrayList<ArrayList<Object>>();

示例

Multidimensional ArrayList: [[3, 4], [12, 13, 14, 15], [22, 23, 24], [33]]

让我们快速浏览一下多维ArrayList的add()方法,如下所示。

  • **boolean add( ArrayList e) **: 它用于在指定的集合中插入元素。
  • **void add( int index, ArrayList e) **: 它用于在一个集合中的指定位置插入元素。

    例子 1 :

    // Java Program to Illustrate Multidimensional ArrayList
     
    // Importing required classes
    import java.util.*;
     
    // Main class
    // MultidimensionalArrayList
    class GFG {
     
        // Method 1
        // To create and return 2D ArrayList
        static List create2DArrayList()
        {
     
            // Creating a 2D ArrayList of Integer type
            ArrayList<ArrayList<Integer> > x
                = new ArrayList<ArrayList<Integer> >();
     
            // One space allocated for R0
            x.add(new ArrayList<Integer>());
     
            // Adding 3 to R0 created above x(R0, C0)
            x.get(0).add(0, 3);
     
            // Creating R1 and adding values
            // Note: Another way for adding values in 2D
            // collections
            x.add(
                new ArrayList<Integer>(Arrays.asList(3, 4, 6)));
     
            // Adding 366 to x(R1, C0)
            x.get(1).add(0, 366);
     
            // Adding 576 to x(R1, C4)
            x.get(1).add(4, 576);
     
            // Now, adding values to R2
            x.add(2, new ArrayList<>(Arrays.asList(3, 84)));
     
            // Adding values to R3
            x.add(new ArrayList<Integer>(
                Arrays.asList(83, 6684, 776)));
     
            // Adding values to R4
            x.add(new ArrayList<>(Arrays.asList(8)));
     
            // Appending values to R4
            x.get(4).addAll(Arrays.asList(9, 10, 11));
     
            // Appending values to R1, but start appending from
            // C3
            x.get(1).addAll(3, Arrays.asList(22, 1000));
     
            // This method will return 2D array
            return x;
        }
     
        // Method 2
        // Main driver method
        public static void main(String args[])
        {
            // Display message prior for better readability
            System.out.println("2D ArrayList :");
     
            // Printing 2D ArrayList by calling Method 1
            System.out.println(create2DArrayList());
        }
    }
    

    输出

    2D ArrayList :
    [[3], [366, 3, 4, 22, 1000, 6, 576], [3, 84], [83, 6684, 776], [8, 9, 10, 11]]
    

    现在让我们看看多维LinkedHashSet的同样的实现,为了显示它的行为方式的不同。同样地,我们也可以将任何其他的集合实现为多维集合,如下图所示。

    语法

    HashSet< HashSet<Object> > a = new HashSet< HashSet<Object> >(); 
    

    注意: LinkedHashSet类包含唯一的元素,并保持插入顺序。因此,在多维LinkedHashSet中,唯一性也将在行中得到维护。

    例2 :

    // Java Program to Illustrate Multidimensional LinkedHashSet
     
    // Importing required classes
    import java.util.*;
     
    // Main class
    // Multidimensional LinkedHashSet
    class GFG {
     
        // Method 1
        // To create and return 2D LinkedHashSet
        static Set create2DLinkedHashSet()
        {
            // Creating an empty 2D LinkedHashSet
            LinkedHashSet<LinkedHashSet<String> > x
                = new LinkedHashSet<LinkedHashSet<String> >();
     
            // Creating R0
            x.add(new LinkedHashSet<String>(
                Arrays.asList("Apple", "Orange")));
     
            // Creating R1, here "Coffee" will be considered as
            // only one object to maintain uniqueness
            x.add(new LinkedHashSet<String>(Arrays.asList(
                "Tea", "Coffee", "Milk", "Coffee", "Water")));
     
            // Creating R2
            x.add(new LinkedHashSet<String>(
                Arrays.asList("Tomato", "Potato", "Onion")));
     
            // Creating R3 but it will not be added as it
            // contains the same items as R2
     
            // Note: LinkedHashSet inserts only unique items
     
            x.add(new LinkedHashSet<String>(
                Arrays.asList("Tomato", "Potato", "Onion")));
     
            // Returning multidimensional LinkedHashSet
            return x;
        }
     
        // Method 2
        // Main driver method
        public static void main(String[] args)
        {
            // Display message for better readability
            System.out.println("2D LinkedHashSet :");
     
            // Printing 2D LinkedHashSet by
            // calling method 1
            System.out.println(create2DLinkedHashSet());
        }
    }
    

    输出

    2D LinkedHashSet :
    [[Apple, Orange], [Tea, Coffee, Milk, Water], [Tomato, Potato, Onion]]
    

    Python教程

    Java教程

    Web教程

    数据库教程

    图形图像教程

    大数据教程

    开发工具教程

    计算机教程

    © 2025 极客教程   备案号:蜀ICP备11026280号-10


    友情链接:极客笔记