Java >> Java opplæring >  >> Java

Flerdimensjonal Array Java Eksempel

I denne artikkelen vil vi se hva en flerdimensjonal matrise er i Java, ulike syntakser, og hvordan vi kan bruke slike matriser i eksempler fra den virkelige verden.

1. Introduksjon

En matrise er en grunnleggende datatype som inneholder flere verdier av samme datatype. Hver enkelt verdi kan nås ved å bruke en tallbasert indeks i forhold til det første elementet i matrisen, som starter med 0. Nedenfor er for eksempel matrisene med tall og tegn. Matriser kan også være av ikke-grunnleggende datatyper, for eksempel en rekke ansatte.

For mer informasjon om arrays i java sjekk Java-dokumentasjonen på Javadocs.

2. Typer arrays

Matriser er kategorisert etter antall dimensjoner der hver dimensjon består av en rekke forhåndsdefinerte elementer. For eksempel er matrisene illustrert i avsnitt-1 1D-matriser eller bare kalt matriser.

I en matrise, hvis hvert element består av en annen matrise med elementer, kalles det 2D-matrise. Et typisk eksempel på 2D-arrayer er sitterader i en kinosal. Her inneholder kinosalen et N-antall rader og et M-antall seter. Du må ha sett kinobilletter som har setenummer som D-3 der D representerer navnet på raden og nummeret representerer posisjonen til setet fra første sete 1.

På samme måte er en 3-D-matrise en matrise som inneholder en matrise som igjen inneholder en annen matrise (3 nivåer). Et typisk eksempel på 3D-matriser i det virkelige liv er å skanne en bok. En bok inneholder P-antall sider, der hver side inneholder L-linjer og i sin tur inneholder hver linje W-ord.

3. Eksempler

I denne delen gir vi eksempler på hvordan du initialiserer, får tilgang til og modifiserer ett av elementene i en 1D-, 2D- og en 3D-matrise.

Generisk syntaks for å deklarere en matrise:

<datatype>[][][]...n <variableName>;

Eksempel på en 1D-matrise:tryArrays()-metode:

// Initialise an array of numbers
int[] arrayOfIntegers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

// Access the 5th element at index 4
System.out.println("The element at 5th position is : " + arrayOfIntegers[4]);

// Modify the 5th element at index 4
arrayOfIntegers[4] = 10;
System.out.println("The updated element at the 5th position is :" + arrayOfIntegers[4]);

Eksempler for en 2D-matrise:try2DArrays()-metoden:

// Initialise an array of numbers
// This contains 4 rows of 6 seats
// If seat is empty, initialise with seat numbers
String[][] movieSeats = new String[][] {
			    { "A1", "A2", "A3", "A4", "A5", "A6" },
				{ "B1", "B2", "B3", "B4", "B5", "B6" }, 
				{ "C1", "C2", "C3", "C4", "C5", "C6" },
				{ "D1", "D2", "D3", "D4", "D5", "D6" }
};

// Access the seat at D3
System.out.println("The seat at D3 is unallocated : " + movieSeats[3][2]);

// Allocate the D3 to Bob
movieSeats[3][2] = "Bob";
System.out.println("The seat at D3 is occupied by : " + movieSeats[3][2]);

Eksempler for en 3D-matrise:try3DArrays()-metoden:

// Initialise an array of pages, lines and words
String[][][] pagesLinesWords = new String[][][] { 
	{ // Page 1
		{ "This ", "is page 1 : ", "first line", "wrngly", "spelled", "word" }, // Line 1
		{ "This ", "is page 1 :  ", "second line", "correctly", "spelled", "word" }, // Line 2
		{ "This ", "is page 1 :  ", "thrid line", "correctly", "spelled", "word" }, // Line 3
		{ "This ", "is page 1 :  ", "fourth line", "wrngly", "spelled", "word" }, // Line 4
	}, 
	{ // Page 2
		{ "This ", "is page 2 : ", "first line", "wrngly", "phrased", "word" }, // Line 1
		{ "This ", "is page 2 : ", "second line", "correctly", "phrased", "word" }, // Line 2
		{ "This ", "is page 2 : ", "thrid line", "correctly", "phrased", "word" }, // Line 3
		{ "This ", "is page 2 : ", "fourth line", "wrngly", "phrased", "word" }, // Line 4
	}, 
	{ // Page 3
		{ "This ", "is page 3 : ", "first line", "wrngly", "spelled", "word" }, // Line 1
		{ "This ", "is page 3 : ", "second line", "correctly", "spelled", "word" }, // Line 2
		{ "This ", "is page 3 : ", "thrid line", "correctly", "spelled", "word" }, // Line 3
		{ "This ", "is page 3 : ", "fourth line", "wrngly", "spelled", "word" }, // Line 4
	}, 
	{ // Page 4
		{ "This ", "is page 4 : ", "first line", "wrngly", "spelled", "word" }, // Line 1
		{ "This ", "is page 4 : ", "second line", "correctly", "spelled", "word" }, // Line 2
		{ "This ", "is page 4 : ", "thrid line", "correctly", "spelled", "word" }, // Line 3
		{ "This ", "is page 4 : ", "fourth line", "wrngly", "spelled", "word" }, // Line 4
	} 
};

// Access the 4th word on page 1, line 1
System.out.println("The word at page 1, line 1 is 4th word is "
		                  + "wrongly spelled ==> " + pagesLinesWords[0][0][3]);

// Modify the word
pagesLinesWords[0][0][3] = "correctly";
System.out.println("The word on page 1, line 1 is 4th word after correction ==> " + pagesLinesWords[0][0][3] + ".");

4. Når bruker vi en flerdimensjonal array

Vi finner at flerdimensjonale arrays er veldig kraftige når man analyserer mange komplekse strukturerte problemer. Her er noen av eksemplene for slike komplekse strukturerte problemer:

  • Løse de kjente kubene som matcher i en Rubik-kube,
  • Løse grafiske problemer som involverer X- og Y-akser på et 2D-plan,
  • Løse grafiske problemer som involverer X-, Y- og Z-akser på et 3D-plan,
  • Løse problemer som involverer utvalget av nettverkselementer koblet i et rutenettmønster i X-, Y- og Z-aksen
  • Løse komplekse grafrelaterte problemer som Dijkstras algoritme

5. Sett dem alle sammen

Her er MultidimensionalArrayExample klasse som demonstrerer bruken av 1-D, 2-D og 3-D-matriser. I denne klassen viser den 3 metoder, tryArrays() , try2DArray() , try3DArray() for henholdsvis 1-D, 2-D og 3-D-matriser. Denne inneholder også en main() metode for å kalle alle metodene.

/**
 * This class is a demo to explain multi-dimensional arrays.
 * 
 * @author Shivakumar Ramannavar
 */
public class MultidimensionalArrayExample {

	/**
	 * Try 1-D array
	 */
	public static void try1DArray() {
		System.out.println("Trying the 1-D array");
		System.out.println("====================");

		int numberOfNumbers = 10;

		// Initialise an array of numbers
		int[] arrayOfIntegers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

		System.out.printf("There are %d numbers in the array.\n", numberOfNumbers);

		// Changing the fifth element to 10, index is 4
		System.out.println("The element at the 5th position is:" + arrayOfIntegers[4]);
		System.out.println("Modifying the item at arrayOfIntegers[4]. " + "Assigning the value to 10.");
		arrayOfIntegers[4] = 10;
		System.out.println("The updated element at the 5th position is :" + arrayOfIntegers[4]);
	}

	/**
	 * Try 2-D array
	 */
	public static void try2DArray() {
		System.out.println("\n\nTrying the 2-D array");
		System.out.println("====================");

		int numOfRows = 4;
		int numOfSeatsInEachRow = 6;

		System.out.printf("There are %d rows and %d seats in each row " + "in the cinema hall.", numOfRows,
				numOfSeatsInEachRow);
		// Initialise an array of numbers
		// This contains 4 rows of 6 seats
		// If seat is empty, initialise with seat numbers
		String[][] movieSeats = new String[][] { { "A1", "A2", "A3", "A4", "A5", "A6" },
				{ "B1", "B2", "B3", "B4", "B5", "B6" }, { "C1", "C2", "C3", "C4", "C5", "C6" },
				{ "D1", "D2", "D3", "D4", "D5", "D6" }, };

		// Access the seat at D3
		System.out.println("The seat at D3 is unallocated : " + movieSeats[3][2]);
		System.out.println("Assiging the seat to Bob by modifying the item at movieSeats[3][2].");

		// Allocate the D3 to Bob
		movieSeats[3][2] = "Bob";
		System.out.println("The seat at D3 is occupied by : " + movieSeats[3][2]);
	}

	/**
	 * Try 3-D array
	 */
	public static void try3DArray() {
		System.out.println("\n\nTrying the 3-D array");
		System.out.println("====================");

		int numfOfPages = 4;
		int numOfLines = 40;
		int numOfWords = 10;

		System.out.printf("There are %d pages in the book.\n", numfOfPages);
		System.out.printf("There are %d lines on a page.\n", numOfLines);
		System.out.printf("There are %d words in a line.\n", numOfWords);

		// Initialise an array of pages, lines and words
		String[][][] pagesLinesWords = new String[][][] { 
			{ // Page 1
				{ "This ", "is page 1 : ", "first line", "wrngly", "spelled", "word" }, // Line 1
				{ "This ", "is page 1 :  ", "second line", "correctly", "spelled", "word" }, // Line 2
				{ "This ", "is page 1 :  ", "thrid line", "correctly", "spelled", "word" }, // Line 3
				{ "This ", "is page 1 :  ", "fourth line", "wrngly", "spelled", "word" }, // Line 4
			}, { // Page 2
					{ "This ", "is page 2 : ", "first line", "wrngly", "phrased", "word" }, // Line 1
					{ "This ", "is page 2 : ", "second line", "correctly", "phrased", "word" }, // Line 2
					{ "This ", "is page 2 : ", "thrid line", "correctly", "phrased", "word" }, // Line 3
					{ "This ", "is page 2 : ", "fourth line", "wrngly", "phrased", "word" }, // Line 4
			}, { // Page 3
					{ "This ", "is page 3 : ", "first line", "wrngly", "spelled", "word" }, // Line 1
					{ "This ", "is page 3 : ", "second line", "correctly", "spelled", "word" }, // Line 2
					{ "This ", "is page 3 : ", "thrid line", "correctly", "spelled", "word" }, // Line 3
					{ "This ", "is page 3 : ", "fourth line", "wrngly", "spelled", "word" }, // Line 4
			}, { // Page 4
					{ "This ", "is page 4 : ", "first line", "wrngly", "spelled", "word" }, // Line 1
					{ "This ", "is page 4 : ", "second line", "correctly", "spelled", "word" }, // Line 2
					{ "This ", "is page 4 : ", "thrid line", "correctly", "spelled", "word" }, // Line 3
					{ "This ", "is page 4 : ", "fourth line", "wrngly", "spelled", "word" }, // Line 4
			} 
		};

		// Access the 4th word on page 1, line 1
		System.out.println("\nThe line on page 1, line 1 is ==> [" + String.join(" ", pagesLinesWords[0][0]) + "]");
		System.out.println(
				"The word on page 1, line 1 is 4th word is " + "wrongly spelled ==> " + pagesLinesWords[0][0][3]);
		System.out.println("\nCorrecting the word by modifying array element pagesLinesWords[0][0][3].");

		// Modify the word
		pagesLinesWords[0][0][3] = "correctly";

		System.out.println("The word on page 1, line 1 is 4th word after correction ==> " + pagesLinesWords[0][0][3] + ".");

	}
	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	
		// Initialise 1-D array and, access and modify one of the elements
		try1DArray();

		// Initialise 2-D array and, access and modify one of the elements
		try2DArray();

		// Initialise 3-D array and, access and modify one of the elements
		try3DArray();

	}

}

6. Utførelse

I denne delen vil vi kjøre programmene for den flerdimensjonale matrisen og se hvordan den fungerer.

Forutsetninger:

  • Java 1.8 installert i systemet. Miljøvariabler JAVA_HOME satt til Java-plasseringen og PATH satt til katalogen som inneholder javac og java binærfiler ( %JAVA_HOME%/bin på Windows eller $JAVA_HOME/bin på Linux-maskiner)
  • Kildekode zip og lastet ned til et sted (f.eks. C:\JavaCodeGeeks . Dette ville vært annerledes for Linux)
  • Eclipse IDE (Photon Release (4.8.0) brukes i dette eksemplet)

3.1 Utførelse ved bruk av eclipse

Trinn 1:Åpne Eclipse IDE.
Trinn 2:Klikk på Fil>> Importer.
Trinn 3:Fra "Importer"-menyen velg "Eksisterende prosjekter til arbeidsområde".

Trinn 4:Klikk på Neste.
Trinn 5:På neste side klikker du på bla og velger roten til eksempelmappen (si,C:\JavaCodeGeeks ). Klikk på "Fullfør"-knappen.

Trinn 6:Sørg for at Package Explorer er lastet og viser alle filene som vist i figuren nedenfor.
Trinn 7:Klikk på src >> com.javacodegeeks.examples >> MultidimensionalArrayExample
Trinn 8:Høyreklikk på MultidimensionalArrayExample.java , fra menyen, velg

Se eksempelutgangen som nedenfor:

Trying the 1-D array
====================
There are 10 numbers in the array.
The element at the 5th position is:5
Modifying the item at arrayOfIntegers[4]. Assigning the value to 10.
The updated element at the 5th position is :10


Trying the 2-D array
====================
There are 4 rows and 6 seats in each row in the cinema hall.
The seat at D3 is unallocated: D3
Assiging the seat to Bob by modifying the item at movieSeats[3][2].
The seat at D3 is occupied by Bob


Trying the 3-D array
====================
There are 4 pages in the book.
There are 40 lines on a page.
There are 10 words in a line.

The line on page 1, line 1 is ==> [This  is page 1 :  first line wrngly spelled word]
The word on page 1, line 1 is 4th word is wrongly spelled ==> wrngly

Correcting the word by modifying array element pagesLinesWords[0][0][3].
The word on page 1, line 1 is 4th word after correction ==> correctly.

7. Last ned Eclipse Project


Java Tag