Java Set <set <string>&gt; to String [] [] </set <string>

时间:2012-12-16 21:48:06

标签: java string set

如何将Set<Set<String>>转换为String[][]?我试过.toArray(new String[0]),但这似乎没有办法。

谢谢! 基督教

3 个答案:

答案 0 :(得分:4)

对于外部集合中的每个Set<String> s,将s转换为String[]并将其添加到数组数组中。

我不知道从嵌套集合创建n维数组的任何内置方法。

答案 1 :(得分:1)

遍历集合并创建数组

答案 2 :(得分:0)

尝试下面的代码,它可以正常工作

package com.rais;

import java.util.HashSet;
import java.util.Set;

/**
 * @author Rais.Alam
 * @date Dec 17, 2012
 */
public class SetClient
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {

        Set<Set<String>> myArray = new HashSet<Set<String>>();

        Set<String> arr1 = new HashSet<String>();
        Set<String> arr2 = new HashSet<String>();
        Set<String> arr3 = new HashSet<String>();

        arr1.add("a-1");
        arr1.add("a-2");
        arr1.add("a-3");

        arr2.add("b-1");
        arr2.add("b-2");
        arr2.add("b-3");

        arr3.add("c-1");
        arr3.add("c-2");
        arr3.add("c-3");
        arr3.add("c-4");
        arr3.add("c-5");

        myArray.add(arr1);
        myArray.add(arr2);
        myArray.add(arr3);

        String[][] outputArray = convertSetOfSetToArray(myArray);

        for (String[] outerArr : outputArray)
        {
            for (String value : outerArr)
            {
                if (value != null)
                {
                    System.out.println(value);
                }
            }
        }

    }

    public static String[][] convertSetOfSetToArray(Set<Set<String>> myArray)
    {
        int secondArraySize = 0;

        /*
         * Looping array to get the size.
         */
        for (Set<String> innerSet : myArray)
        {
            if (innerSet.size() > secondArraySize)
            {
                secondArraySize = innerSet.size();
            }
        }
        // Declaring and initializing String arrays;
        String[][] outputArray = new String[myArray.size()][secondArraySize];

        int firstIndex = 0;
        int secondIndex = 0;

        for (Set<String> innerSet : myArray)
        {
            for (String value : innerSet)
            {
                outputArray[firstIndex][secondIndex] = value;
                secondIndex++;
            }
            secondIndex = 0;
            firstIndex++;
        }

        return outputArray;
    }

}