Wielowymiarowe tablice długości w Javie

Jak znaleźć długości wielowymiarowej tablicy z nieporównywalnymi indeksami?

Na przykład mam int[][] pathList = new int[6][4]

Bez twardego kodowania indeksów, muszę znaleźć "6" i "4".

Mogę znaleźć 6 z pathList.length, ale jak uzyskać "4"?

Author: Alexander Farber, 2011-05-11

6 answers

To da ci długość tablicy w indeksie i

pathList[i].length

Należy zauważyć, że w przeciwieństwie do C lub C++, Długość elementów tablicy dwuwymiarowej w Javie nie musi być równa. Na przykład, gdy pathList jest instancją równą new int[6][], może pomieścić 6 instancji int [], z których każda może mieć inną długość.


Więc kiedy tworzysz tablice tak, jak pokazałeś w swoim pytaniu, możesz równie dobrze zrobić

 pathList[0].length

Ponieważ wiesz, że wszystkie one mają tej samej długości. W pozostałych przypadkach należy dokładnie zdefiniować długość drugiego wymiaru - może to być maksimum długości wszystkich elementów, a może minimum. W większości przypadków, aby podjąć decyzję, musisz iterować wszystkie elementy i odczytać ich długość]}

for(int i = 0; i < pathList.length; i++)
{
    int currLen = pathList[i].length;
}
 49
Author: no.good.at.coding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-11 01:28:55

To jest dla trójwymiarowej tablicy.

 int x[][][]=new int[5][8][10];
        System.out.println(x.length+" "+x[1].length+" "+x[0][1].length);

Wyjście : 5 8 10

 11
Author: Siddharth Thevaril,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-20 07:35:06

Java ma "postrzępione" wielowymiarowe tablice, co oznacza, że każdy "wiersz" w Twojej dwuwymiarowej tablicy może mieć różną liczbę komponentów. Jeśli możesz założyć, że każdy wiersz ma taką samą liczbę elementów, użyj:

pathList[0].length;

W przeciwnym razie będziesz musiał iterację:

int maxRowLength = 0;
for (int i = 0; i < pathList.length; i++) {
    if (maxRowLength < pathList[i].length) {
        maxRowLength = pathList[i].length;
    }
}
 7
Author: Nathan Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-11 01:22:22

Dla tablicy 2 D:-

int x[][] = new int[6][12];
System.out.println(x.length + " " + x[1].length);

Wyjście: 6 12

 4
Author: Nikhil Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-20 08:08:45

W Javie możemy zdefiniować tablicę tablic, którą nazywamy wielowymiarową arrays.By array of arrays mamy na myśli, że pojedynczy elment naszej tablicy jest ponownie tablicą (w Javie może być wielokrotnej długości). aby znaleźć Długość wielu tablic o wszystkich podzakresach tej samej wielkości, możemy użyć:

int[][]a=new int[3][3];//let a[][] be my array
a.length will work.   //a is an object of proxy class and length is its property.

Jednakże, jeśli masz podparyski o różnych rozmiarach, musisz to powtórzyć.

for(i=0;i<a.length;i++)
        int cur_size=a[i].length;
 1
Author: Vaibhav Grover,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-31 10:13:39

Długość tablicy 3-D

int[][][] a = new int[2][3][7];
int length=0;
for(int[][] i:a){
    for(int j[]:i){
        length+=j.length;
    }   
}           
System.out.println(length);
 0
Author: Kaptan Singh Rana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 14:05:40