ArrayList רב ממדי ב- Java

1. סקירה כללית

יצירת רב מימדי רשימת מערך עולה לעתים קרובות במהלך התכנות. במקרים רבים, יש צורך ליצור דו מימד רשימת מערך או תלת מימד רשימת מערך.

במדריך זה נדון כיצד ליצור רב מימדי רשימת מערך בג'אווה.

2. דו ממדי רשימת מערך

נניח שברצוננו לייצג גרף עם 3 קודקודים, הממוספרים 0 עד 2. בנוסף, נניח שיש 3 קצוות בגרף (0, 1), (1, 2) ו- (2, 0), כאשר זוג של קודקודים מייצג קצה.

אנו יכולים לייצג את הקצוות בתלת ממד רשימת מערך על ידי יצירה ואכלוס של רשימת מערך שֶׁל רשימת מערךס.

ראשית, בואו ניצור 2-D חדש רשימת מערך:

int vertexCount = 3; רשימת מערך גרף = ArrayList חדש (vertexCount);

לאחר מכן נפתח את כל האלמנטים של רשימת מערך עם אחר רשימת מערך:

עבור (int i = 0; i <vertexCount; i ++) {graph.add (ArrayList חדש ()); }

לבסוף, אנו יכולים להוסיף את כל הקצוות (0, 1), (1, 2) ו- (2, 0), ל -2-D שלנו רשימת מערך:

graph.get (0). להוסיף (1); graph.get (1). להוסיף (2); graph.get (2) .add (0);

בואו נניח גם שהגרף שלנו אינו גרף מכוון. לכן, עלינו להוסיף גם את הקצוות (1, 0), (2, 1) ו- (0, 2) ל -2-D שלנו רשימת מערך:

graph.get (1). להוסיף (0); graph.get (2). להוסיף (1); graph.get (0). להוסיף (2);

ואז, כדי לעבור על הגרף כולו, נוכל להשתמש בכפול לולאה:

int vertexCount = graph.size (); עבור (int i = 0; i <vertexCount; i ++) {int edgeCount = graph.get (i) .size (); עבור (int j = 0; j <edgeCount; j ++) {שלם startVertex = i; מספר שלם endVertex = graph.get (i) .get (j); System.out.printf ("קודקוד% d מחובר לקודקוד% d% n", startVertex, endVertex); }}

3. תלת מימד רשימת מערך

בחלק הקודם יצרנו דו מימד רשימת מערך. בעקבות אותה היגיון, בואו ליצור תלת מימד רשימת מערך:

נניח שאנחנו רוצים לייצג חלל תלת-ממדי. לכן, כל נקודה במרחב תלת-ממדי זה תוצג על ידי שלוש קואורדינטות, למשל, X, Y ו- Z.

בנוסף לכך, בואו נדמיין שלכל אחת מהנקודות האלה יהיה צבע, אדום, ירוק, כחול או צהוב. כעת, כל נקודה (X, Y, Z) והצבע שלה יכולים להיות מיוצגים על ידי תלת מימד רשימת מערך.

למען הפשטות, נניח שאנחנו יוצרים שטח תלת-ממדי (2 x 2 x 2). יהיו לה שמונה נקודות: (0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0 , 1), (1, 1, 0) ו- (1, 1, 1).

נתחיל תחילה את המשתנים ואת התלת מימד רשימת מערך:

int x_axis_length = 2; int y_axis_length = 2; int z_axis_length = 2; רשימת מערך<>> space = ArrayList חדש (x_axis_length);

לאחר מכן, בוא נתחיל כל אלמנט של רשימת מערך עם רשימת מערך:

עבור (int i = 0; i <x_axis_length; i ++) {space.add (ArrayList חדש(y_axis_length)); עבור (int j = 0; j <y_axis_length; j ++) {space.get (i) .add (ArrayList חדש (z_axis_length)); }}

כעת, אנו יכולים להוסיף צבעים לנקודות בחלל. בואו להוסיף צבע אדום לנקודות (0, 0, 0) ו- (0, 0, 1):

space.get (0) .get (0) .add (0, "אדום"); space.get (0) .get (0) .add (1, "אדום");

לאחר מכן, בואו נקבע צבע כחול לנקודות (0, 1, 0) ו- (0, 1, 1):

space.get (0) .get (1) .add (0, "כחול"); space.get (0) .get (1) .add (1, "כחול");

ובאופן דומה, אנו יכולים להמשיך לאכלס נקודות במרחב לצבעים אחרים.

שים לב שלנקודה עם קואורדינטות (i, j, k), מידע הצבע שלה מאוחסן בתלת מימד הבא רשימת מערך אֵלֵמֶנט:

space.get (i) .get (j) .get (k) 

כפי שראינו בדוגמה זו, מֶרחָב משתנה הוא רשימת מערך. כמו כן, כל מרכיב זה רשימת מערך הוא דו-ממדי רשימת מערך (בדומה למה שראינו בסעיף 2).

שים לב כי אינדקס האלמנטים שלנו מֶרחָברשימת מערך מייצג את הקואורדינטה X, בעוד שכל 2-D רשימת מערך, המצוי באינדקס זה, מייצג את הקואורדינטות (Y, Z).

4. מסקנה

במאמר זה דנו כיצד ליצור רב מימדי רשימת מערך בג'אווה. ראינו כיצד אנו יכולים לייצג גרף באמצעות דו-ממדי רשימת מערך. יתר על כן, בדקנו גם כיצד לייצג קואורדינטות שטח תלת מימד באמצעות תלת מימד רשימת מערך.

בפעם הראשונה השתמשנו ב- רשימת מערך שֶׁל רשימת מערך, ואילו בפעם השנייה השתמשנו ב- רשימת מערך של 2-D רשימת מערך. בדומה לכך, ליצירת ממד N רשימת מערך, אנחנו יכולים להרחיב את אותו מושג.

ניתן למצוא את היישום המלא של מדריך זה ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found