2012-12-16 153 views

回答

4

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

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

+0

这难道不痛苦的缓慢? –

+5

你认为Set.toArray()的实现在内部有什么作用? JVM并不神奇。 – Philipp

+2

@ChristianStewart为什么慢?如果你循环或者如果java在内部执行它,它没有区别。 – AlexWien

1

循环遍历集合,并创建阵列下面的代码

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; 
    } 

} 
相关问题