दिलचस्प पोस्ट
पांडा के साथ डाटाफ्रेम के माध्यम से लूप का सबसे कारगर तरीका क्या है? लिंक किए गए सूची को क्रमबद्ध करने के लिए सबसे तेज़ एल्गोरिथ्म क्या है? मैं UINavigationController से एक दृश्य कैसे पॉप कर सकता हूं और इसे दूसरे ऑपरेशन में बदल सकता हूं? जावा में एक सूची के सभी तत्वों को कैसे मुद्रित करें? OleDbException अनधिकृत था … UPDATE कथन में सिंटैक्स त्रुटि मूल्यों के आधार पर मानचित्र <कुंजी, मान> सॉर्ट करें (जावा) मैं परंपरागत नामकरण वाले रेल को ओवरराइड कैसे कर सकता हूं? मेरी मैक्रो वैरिएबल का हल क्यों नहीं होगा? पैडिंग और बॉर्डर बॉक्स में फ्लेक्स-सिकुड़ कारक कैसे होता है? कैसे कैश रिक्त करें और सभी लक्ष्यों को साफ करें Xcode 4 और बाद में स्टोरीबोर्ड में UIScrollView का उपयोग कैसे करें HTTP प्रतिक्रिया में क्यों नहीं, कैश और नो-स्टोर दोनों का उपयोग किया जाना चाहिए? पैकेज नाम जानना शुरू करें वस्तु खाली है? क्रोम एक्सटेंशन से वर्तमान पृष्ठ का स्रोत HTML प्राप्त करना

कैसे जावा में एक बहुआयामी ArrayList बनाने के लिए?

मैं किसी भी तरह सरणी सूची में नया हूँ, लेकिन मुझे इस परियोजना की आवश्यकता है ताकि मैं ऐसा कर सकूं, अगर आप लोग मेरी मदद कर सकें, तो मैं आभारी होंगे!
असल में, मुझे स्ट्रिंग मूल्यों को पकड़ने के लिए एक बहुआयामी ArrayList बनाने की आवश्यकता है। मुझे पता है कि यह एक मानक सरणी के साथ कैसे करें, जैसे कि public static String[][] array = {{}} लेकिन यह अच्छा नहीं है क्योंकि मुझे अपने सरणी के आकार का पता नहीं है, मैं जानता हूं कि कितने डिमैन्टेशन उसमें होगा।

तो, यदि आप जानते हैं कि 2 / + डिमेंशन के साथ 'गतिशील रूप से आकार देने योग्य सरणी कैसे बनाएं, तो कृपया मुझे बता सकते हैं।

अग्रिम में धन्यवाद,
एंडी

संपादित करें / अपडेट


हो सकता है कि इसे बदलना या एक मानक एरे को परिभाषित करने के लिए एक varible का उपयोग करना आसान होगा? लेकिन मुझे नहीं पता?
हालांकि यह संभव है कि मेरे मूल विचार का एक अर्रेइलाइट का उपयोग करें … मुझे सिर्फ 2 डी अर्रेइलाइट बनाने के लिए एक पूर्ण उदाहरण कोड है और सूचकांक को जानने के बिना दोनों आयामों में इतना उदाहरण मान जोड़ना है I

वेब के समाधान से एकत्रित समाधान "कैसे जावा में एक बहुआयामी ArrayList बनाने के लिए?"

ArrayList<ArrayList<String>> array = new ArrayList<ArrayList<String>>();

अपनी आवश्यकताओं के आधार पर, आप आसानी से पहुंच बनाने के लिए नीचे दिए गए सामान्य श्रेणी का उपयोग कर सकते हैं:

 import java.util.ArrayList; class TwoDimentionalArrayList<T> extends ArrayList<ArrayList<T>> { public void addToInnerArray(int index, T element) { while (index >= this.size()) { this.add(new ArrayList<T>()); } this.get(index).add(element); } public void addToInnerArray(int index, int index2, T element) { while (index >= this.size()) { this.add(new ArrayList<T>()); } ArrayList<T> inner = this.get(index); while (index2 >= inner.size()) { inner.add(null); } inner.set(index2, element); } } 

यदि आप पूर्वनिर्धारित जावा कक्षाओं का उपयोग करने की अनुमति है, तो आप ऐसा कुछ कर सकते हैं:

 private static ArrayList<ArrayList<String>> biDemArrList = new ArrayList<ArrayList<String>>(); 

फिर आप नए तत्व जोड़ सकते हैं, जैसे कुछ:

 ArrayList<String> temp = new ArrayList<String>(); // added () temp.add("Hello world."); biDemArrList.add(temp); 

आशा है कि आप समझ सकते हैं कि मेरा क्या मतलब है और क्या हो रहा है। इसके अलावा, आपको java.util.ArrayList आयात करना होगा; इसके लिए, यदि आप जावा वर्ग का उपयोग कर रहे हैं

आप तत्वों के साथ ArrayList हो सकते हैं जो कि ArrayLists ही होंगे।

मैं एक सरणी या एक अमरूद के मल्टीमेप के अंदर एक आरे के बारे में सोच सकता हूँ?

जैसे

 ArrayList<ArrayList<String>> matrix = new ArrayList<ArrayList<String>>(); 

List<ArrayList<String>> 2dlist = new ArrayList<ArrayList<String>>(); नहीं चाहते हैं List<ArrayList<String>> 2dlist = new ArrayList<ArrayList<String>>(); एक बेहतर (अधिक कुशल) कार्यान्वयन हो सकता है?

एक बार जब मुझे 2-डी सरणीसूची की आवश्यकता होती है और मैं सूची और अर्रेइलिस्ट का उपयोग कर बनाया और कोड निम्नानुसार है:

 import java.util.*; public class ArrayListMatrix { public static void main(String args[]){ List<ArrayList<Integer>> a = new ArrayList<>(); ArrayList<Integer> a1 = new ArrayList<Integer>(); ArrayList<Integer> a2 = new ArrayList<Integer>(); ArrayList<Integer> a3 = new ArrayList<Integer>(); a1.add(1); a1.add(2); a1.add(3); a2.add(4); a2.add(5); a2.add(6); a3.add(7); a3.add(8); a3.add(9); a.add(a1); a.add(a2); a.add(a3); for(ArrayList obj:a){ ArrayList<Integer> temp = obj; for(Integer job : temp){ System.out.print(job+" "); } System.out.println(); } } } 

आउटपुट:

1 2 3

4 5 6

7 8 9

स्रोत: https://www.codepuran.com/java/2d-matrix-arraylist-collection-class-java/

आप 3D ArrayList के लिए इसके बारे में क्या सोचेंगे – इसका उपयोग एरे के समान किया जा सकता है – कोड में टिप्पणियां देखें:

  import java.util.ArrayList; import java.util.List; /** * ArrayList3D simulates a 3 dimensional array,<br> * eg: myValue = arrayList3D.get(x, y, z) is the same as: <br> * myValue = array[x][y][z] <br> * and<br> * arrayList3D.set(x, y, z, myValue) is the same as:<br> * array[x][y][z] = myValue; <br> * but keeps its full ArrayList functionality, thus its * benefits of ArrayLists over arrays.<br> * <br> * @param <T> data type */ public class ArrayList3D <T> { private final List<List<List<T>>> arrayList3D; public ArrayList3D() { arrayList3D = newArrayDim1(); } /** * Get value of the given array element.<br> * Eg: get(2, 5, 3);<br> * For 3 dim array this would equal to:<br> * nyValue = array[2][5][3];<br> * <br> * Throws: IndexOutOfBoundsException * - if any index is out of range * (index < 0 || index >= size())<br> * <br> * @param dim1 index of the first dimension of the array list * @param dim2 index of the second dimension of the array list * @param dim3 index of the third dimension of the array list * @return value of the given array element (of type T) */ public T get(int dim1, int dim2, int dim3) { List<List<T>> ar2 = arrayList3D.get(dim1); List<T> ar3 = ar2.get(dim2); return ar3.get(dim3); } /** * Set value of the given array.<br> * Eg: set(2, 5, 3, "my value");<br> * For 3 dim array this would equal to:<br> * array[2][5][3]="my value";<br> * <br> * Throws: IndexOutOfBoundsException * - if any index is out of range * (index < 0 || index >= size())<br> * <br> * @param dim1 index of the first dimension of the array list * @param dim2 index of the second dimension of the array list * @param dim3 index of the third dimension of the array list * @param value value to assign to the given array * <br> */ public void set(int dim1, int dim2, int dim3, T value) { arrayList3D.get(dim1).get(dim2).set(dim3, value); } /** * Set value of the given array element.<br> * Eg: set(2, 5, 3, "my value");<br> * For 3 dim array this would equal to:<br> * array[2][5][3]="my value";<br> * <br> * Throws: IndexOutOfBoundsException * - if any index is less then 0 * (index < 0)<br> * <br> * @param indexDim1 index of the first dimension of the array list * @param indexDim2 index of the second dimension of the array list * If you set indexDim1 or indexDim2 to value higher * then the current max index, * the method will add entries for the * difference. The added lists will be empty. * @param indexDim3 index of the third dimension of the array list * If you set indexDim3 to value higher * then the current max index, * the method will add entries for the * difference and fill in the values * of param. 'value'. * @param value value to assign to the given array index */ public void setOrAddValue(int indexDim1, int indexDim2, int indexDim3, T value) { List<T> ar3 = setOrAddDim3(indexDim1, indexDim2); int max = ar3.size(); if (indexDim3 < 0) indexDim3 = 0; if (indexDim3 < max) ar3.set(indexDim3, value); for (int ix = max-1; ix < indexDim3; ix++ ) { ar3.add(value); } } private List<List<List<T>>> newArrayDim1() { List<T> ar3 = new ArrayList<>(); List<List<T>> ar2 = new ArrayList<>(); List<List<List<T>>> ar1 = new ArrayList<>(); ar2.add(ar3); ar1.add(ar2); return ar1; } private List<List<T>> newArrayDim2() { List<T> ar3 = new ArrayList<>(); List<List<T>> ar2 = new ArrayList<>(); ar2.add(ar3); return ar2; } private List<T> newArrayDim3() { List<T> ar3 = new ArrayList<>(); return ar3; } private List<List<T>> setOrAddDim2(int indexDim1) { List<List<T>> ar2 = null; int max = arrayList3D.size(); if (indexDim1 < 0) indexDim1 = 0; if (indexDim1 < max) return arrayList3D.get(indexDim1); for (int ix = max-1; ix < indexDim1; ix++ ) { ar2 = newArrayDim2(); arrayList3D.add(ar2); } return ar2; } private List<T> setOrAddDim3(int indexDim1, int indexDim2) { List<List<T>> ar2 = setOrAddDim2(indexDim1); List<T> ar3 = null; int max = ar2.size(); if (indexDim2 < 0) indexDim2 = 0; if (indexDim2 < max) return ar2.get(indexDim2); for (int ix = max-1; ix < indexDim2; ix++ ) { ar3 = newArrayDim3(); ar2.add(ar3); } return ar3; } public List<List<List<T>>> getArrayList3D() { return arrayList3D; } } 

और यहां एक परीक्षण कोड है:

  ArrayList3D<Integer> ar = new ArrayList3D<>(); int max = 3; for (int i1 = 0; i1 < max; i1++) { for (int i2 = 0; i2 < max; i2++) { for (int i3 = 0; i3 < max; i3++) { ar.setOrAddValue(i1, i2, i3, (i3 + 1) + (i2*max) + (i1*max*max)); int x = ar.get(i1, i2, i3); System.out.println(" - " + i1 + ", " + i2 + ", " + i3 + " = " + x); } } } 

परिणाम आउटपुट:

  • 0, 0, 0 = 1
  • 0, 0, 1 = 2
  • 0, 0, 2 = 3
  • 0, 1, 0 = 4
  • 0, 1, 1 = 5
  • 0, 1, 2 = 6
  • 0, 2, 0 = 7
  • 0, 2, 1 = 8
  • 0, 2, 2 = 9
  • 1, 0, 0 = 10
  • 1, 0, 1 = 11
  • 1, 0, 2 = 12
  • 1, 1, 0 = 13
  • 1, 1, 1 = 14
  • 1, 1, 2 = 15
  • 1, 2, 0 = 16
  • 1, 2, 1 = 17
  • 1, 2, 2 = 18
  • 2, 0, 0 = 1 9
  • 2, 0, 1 = 20
  • 2, 0, 2 = 21
  • 2, 1, 0 = 22
  • 2, 1, 1 = 23
  • 2, 1, 2 = 24
  • 2, 2, 0 = 25
  • 2, 2, 1 = 26
  • 2, 2, 2 = 27