2013-10-16 2 views
0

Est-il possible de placer un tableau à l'intérieur d'un tableau à deux dimensions? Pour l'explication: j'ai besoin d'un tableau d'octets en deux dimensions, mais j'ai aussi besoin de trois valeurs d'octets pour chaque cellule. Il pourrait ressembler à ceci:Array à l'intérieur d'un tableau à deux dimensions?

+-------------+-------------+ 
| 123,234,125 | 255,109,167 | 
+-------------+-------------+ 
| 172,144,134 | 145,212,124 | 
+-------------+-------------+ 

ou dans un format plus approprié:

[ [ [ 123,234,125 ] , [ 255,109,167 ] ] , [ [ 172,144,134 ] , [ 145,212,124 ] ] ] 

Ce serait un tableau à deux dimensions contenant des tableaux de trois octets. Est-ce possible en Java?

+2

Pourquoi pensez-vous que ce ne serait pas possible? –

+2

On dirait que vous voulez un [tableau tridimensionnel] (http://stackoverflow.com/questions/11623990/understanding-three-dimensional-arrays). – thegrinner

+0

Cela a été demandé avant http://stackoverflow.com/questions/4781100/how-to-make-an-array-of-arrays-in-java – jessebs

Répondre

3

Totalement possible.

Voici un exemple:

byte[][][] myAwesomeByteArray = 
      { 
       { 
        { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 } 
       }, 
       { 
        { 9, 10, 11 }, { 12, 13, 14 }, { 15, 16, 17 } 
       }, 
       { 
        { 18, 19, 20 }, { 21, 22, 23 }, { 24, 25, 26 } 
       } 
      }; 
System.out.println(Arrays.deepToString(myAwesomeByteArray)); 

Sortie:

[[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[9, 10, 11], [12, 13, 14], [15, 16, 17]], [[18, 19, 20], [21, 22, 23], [24, 25, 26]]] 
+0

+1 pour le nom du tableau –

+0

@HussainAkhtarWahid: ré – Mena

2

Oui, bien sûr, c'est possible. Vous pouvez utiliser un tableau 3D:

byte[][][] array = new byte[w][h][3]; 
array[0][0][0] = 123; 
array[0][0][1] = 234; 
array[0][0][2] = 125; 

Ou utilisez un tableau 2D d'ents. les octets sont 4 octets, ce qui est suffisant pour vos besoins:

int[][] array = new int[w][h]; 
array[0][0] = (123 << 16) | (234 << 8) | (125); 
2

Il y a deux façons de faire ce que vous essayez de faire. Voici deux exemples à essayer.

int [][][] firstArray = new int[][][] {{{ 123,234,125 } , { 255,109,167 }} , {{ 172,144,134 } , { 145,212,124 }}}; 

int [][][] secondArray = new int[2][2][3]; 

Le premier échantillon suppose que vous savez exactement ce que le contenu est pour les tableaux et le second vous donne un peu plus de flexibilité dans la farce les données.

J'espère que ça aide, laissez-moi savoir si vous avez besoin de plus.

0

Vous pouvez essayer ce code pour travailler, mais avec quelques modifications, vous pouvez le modifier en fonction de vos besoins. Toutes les valeurs insérées ici sont statiques, vous pouvez faire cela pour insérer & dynamique. Changez int en octet selon vos besoins.

public static void main(String args[]) 
{ 
    /*Data Insertion*/ 
    int a[]=new int[3]; 
    a[0]=123; 
    a[1]=234; 
    a[2]=125; 
    int a1[]=new int[3]; 
    a1[0]=255; 
    a1[1]=109; 
    a1[2]=167; 
    int a2[]=new int[3]; 
    a2[0]=172; 
    a2[1]=144; 
    a2[2]=134; 
    int a3[]=new int[3]; 
    a3[0]=145; 
    a3[1]=212; 
    a3[2]=124; 
    Object s[][]=new Object[2][2]; 
    s[0][0]=a; 
    s[0][1]=a1; 
    s[1][0]=a2; 
    s[1][1]=a3; 
    /*Data Retrieval*/ 
    for(int i=0;i<s.length;i++) 
    { 
     for(int j=0;j<2;j++) 
     { 
      int sg[]=(int[])s[i][j];  
      System.out.println("Value: "+sg[0]+" "+sg[1]+" "+sg[2]); 
     } 
    } 
} 
0

Comme d'autres l'ont souligné, c'est possible. Si vous avez des doutes, pensez autrement: y a-t-il une raison pour laquelle cela devrait être et non? En mathématiques et en programmation, cela va généralement de la façon suivante: tout ce qui n'est pas expressément interdit est autorisé.

Un tableau peut contenir tous les éléments de type. Alors pourquoi pas des tableaux? Maintenant, considérez les tableaux dans un tableau: de quel type sont leurs éléments? Voir le paragraphe précédent, puis aller aussi loin que vous voulez, car il ne dit nulle part jusqu'où vous êtes autorisé à aller. En dehors des problèmes comme les contraintes de mémoire ...

Questions connexes