2012-12-16 207 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; 
    } 

} 
相關問題