1. Arraysवर्ग

जसे आपण आधी नमूद केले आहे की, अॅरे हे अतिशय उपयुक्त आहेत आणि प्रोग्रामिंगमध्ये वारंवार वापरले जातात.

जावाच्या निर्मात्यांनी पटकन लक्षात घेतले की जावा प्रोग्रामर अनेकदा अॅरेसह काम करताना समान कोड लिहितात. उदाहरणार्थ, अॅरेचा भाग दुसऱ्या अॅरेमध्ये कॉपी करा, अॅरेच्या प्रत्येक सेलला समान मूल्यासह भरण्यासाठी कोड, अॅरेची सामग्री सोयीस्कर स्वरूपात प्रदर्शित करा इ.

म्हणूनच त्यांनी विशेष Arraysवर्ग तयार केला (त्याचे पूर्ण नाव आहे java.util.Arrays), त्यात सर्वात लोकप्रिय अॅरे-संबंधित क्रिया टाकून.

यात प्रत्येक प्रसंगासाठी अनेक पद्धती आहेत, परंतु प्रथम आम्ही त्यापैकी फक्त 10 विचार करू - सर्वात सोप्या आणि बर्‍याचदा वापरल्या जाणार्‍या.


2.Arrays.toString()

पहिली पद्धत आपण पाहणार आहोत त्याला म्हणतात Arrays.toString(). पण प्रथम, थोडी पार्श्वभूमी.

Java मधील प्रत्येक अॅरेमध्ये एक toString()पद्धत असते, जी 'अ‍ॅरेचे मजकूर प्रतिनिधित्व' देते. आपण खालील विधान वापरून अॅरेचे मजकूर प्रतिनिधित्व मिळवू शकता:

String str = name.toString();

अ‍ॅरे व्हेरिएबलचे नाव कुठे nameआहे आणि strअ‍ॅरेचे स्ट्रिंग रिप्रेझेंटेशन संचयित करणार्‍या व्हेरिएबलचे नाव आहे.

परंतु जर तुम्ही पद्धत वापरून अॅरेला स्क्रीनवर मुद्रित करण्याचा प्रयत्न केला , तर तुम्हाला बहुधा असे काहीतरी दिसेल:System.out.println(name)

I@37afeb11

पहिल्या अक्षराचा Iअर्थ असा आहे की तो intअॅरे आहे आणि त्यानंतरची चिन्हे@ मेमरीमधील अॅरेचा पत्ता आहेत. एकीकडे, ही अचूकपणे अॅरे व्हेरिएबलमध्ये साठवलेली माहिती आहे, परंतु दुसरीकडे, आम्हाला काहीतरी वेगळे अपेक्षित होते, बरोबर?

आम्हाला अॅरेमधील मूल्ये पाहायची होती! आणि म्हणूनच त्यांनी Arrays.toString()पद्धत आणली - अॅरेची मूल्ये प्रदर्शित करण्यासाठी. आम्ही त्याला असे म्हणतो:

String str = Arrays.toString(name);

उदाहरणे:

int[] array = {1, 2, 3};
String str = Arrays.toString(array);
व्हेरिएबलमध्ये strस्ट्रिंग असेल:
"[1, 2, 3]"
int[] array = {};
String str = Arrays.toString(array);
व्हेरिएबलमध्ये strस्ट्रिंग असेल:
"[]"
String[] array = {"Hi", "How's", "life?"};
String str = Arrays.toString(array);
व्हेरिएबलमध्ये strस्ट्रिंग असेल:
"[Hi, How's, life?]"


3.Arrays.deepToString()

परंतु तुम्ही द्विमितीय अॅरेला स्ट्रिंग (ते प्रदर्शित करण्यासाठी) using the Arrays.toString()पद्धतीमध्ये रूपांतरित करण्याचा प्रयत्न केल्यास, तुम्हाला काहीतरी परिचित दिसेल:

[I@37afeb11, I@37afeb21, I@37afeb31]

हे सर्व आहे कारण द्विमितीय अॅरेचे सेल एक-आयामी अॅरेचा संदर्भ देतात. आणि एक-आयामी अॅरे स्ट्रिंगमध्ये कसे रूपांतरित केले जातात? अगदी तुम्ही वर बघितल्याप्रमाणे.

काय करता येईल? आपण द्विमितीय अॅरे योग्यरित्या कसे प्रदर्शित करू?

यासाठी, Arraysवर्गाची आणखी एक खास पद्धत आहे — deepToString(). कॉल करणे असे दिसते:

String str = Arrays.deepToString(name);

ही पद्धत दोन-आयामी, एक-आयामी, त्रि-आयामी किंवा सर्वसाधारणपणे, कोणतेही परिमाण असलेल्या अॅरे पास केली जाऊ शकते आणि ती नेहमी अॅरेचे घटक प्रदर्शित करेल.
टीप: पद्धत Arrays.deepToString()आदिमांच्या एक-आयामी अॅरेसह कार्य करत नाही (उदाहरणार्थ, int[]).

उदाहरणे:

Integer[] array = {1, 2, 3};
String str = Arrays.deepToString(array);
व्हेरिएबलमध्ये strस्ट्रिंग असेल:
"[1, 2, 3]"
int[][] array = { {1, 1}, {2, 2}, {3, 3} };
String str = Arrays.deepToString(array);
व्हेरिएबलमध्ये strस्ट्रिंग असेल:
"[[1, 1], [2, 2], [3, 3]]"
int[][][] array = { {{1, 2, 3}, {1}}, {{}} };
String str = Arrays.deepToString(array);
व्हेरिएबलमध्ये strस्ट्रिंग असेल:
"[[[1, 2, 3], [1]], [[]]]"


4.Arrays.equals()

स्क्रीनवर अॅरे कसे प्रदर्शित करायचे ते आम्ही शोधून काढले, परंतु अॅरेची तुलना करण्याबद्दल काय?

स्ट्रिंग्सची तुलना करण्यासाठी, आपल्याकडे पद्धती equalsआणि equalsIgnoreCaseपद्धती आहेत, परंतु अॅरेमध्ये कोणत्या पद्धती आहेत?

चांगली बातमी अशी आहे की अॅरेमध्ये एक equalsपद्धत आहे. वाईट बातमी अशी आहे की ती अॅरेच्या सामग्रीची तुलना करत नाही. अॅरेची पद्धत ऑपरेटर equalsप्रमाणेच कार्य करते ==- ती संदर्भांची तुलना करते. उदाहरणे:

उदाहरणे:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
boolean b = x1 == x2;


false(संदर्भ समान नाहीत)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
दोन अॅरेच्या संदर्भांची तुलना करण्याची equalsपद्धत . (संदर्भ समान नाहीत) arrays

false

काय करता येईल? आम्ही त्यांच्या सामग्रीवर आधारित अॅरेची तुलना कशी करू?

आणि पुन्हा Arraysआपल्या बचावासाठी येतो, किंवा अधिक विशेषतः, त्याची Arrays.equals()पद्धत. आम्ही याला असे म्हणतो:

Arrays.equals(name1, name2)

trueजर अॅरे समान लांबीचे असतील आणि त्यांचे घटक समान असतील तर पद्धत परत येते . अन्यथा, ते परत येते false.

उदाहरणे:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
दोन अॅरेच्या संदर्भांची तुलना करण्याची equalsपद्धत . (संदर्भ समान नाहीत) arrays

false
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
Arrays.equals(x1, x2);


true(सामग्री समान आहेत)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3, 4};
Arrays.equals(x1, x2);


false(अ‍ॅरेची सामग्री वेगळी आहे)

५.Arrays.deepEquals()

आणि, जसे तुम्ही आधीच अंदाज लावला असेल, Arrays.equalsपद्धत द्वि-आयामी अॅरेसाठी योग्यरित्या कार्य करणार नाही: ती द्विमितीय अॅरेला एका-आयामी अॅरेप्रमाणे हाताळते ज्याचे घटक एक-आयामी अॅरेचे पत्ते आहेत.

अशाप्रकारे, बहुआयामी अॅरे ( ) ची योग्यरित्या तुलना करण्यासाठी n = 1, 2, 3,..., त्यांनी पद्धत आणली Arrays.deepEquals(). कॉल करणे असे दिसते:

Arrays.deepEquals(name1, name2)

पद्धत परत येतेtrueजर अॅरे समान लांबीचे असतील आणि त्यांचे घटक समान असतील. अन्यथा, ते परत येतेfalse. जर अ‍ॅरेमधील घटक देखील अ‍ॅरे असतील, तर Arrays.deepEquals()त्यांची तुलना करण्यासाठी पद्धत वापरली जाते आणि असेच.

उदाहरणे:

int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};
x1.equals(x2);
दोन अॅरेच्या संदर्भांची तुलना करण्याची equalsपद्धत . (संदर्भ समान नाहीत) arrays

false
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};
Arrays.equals(x1, x2);
पद्धत Arrays.equalsतुलना करेल आणि एक-आयामी अॅरे म्हणून जे संदर्भ संग्रहित करते. त्यात वेगवेगळे संदर्भ आहेत. (अ‍ॅरेची सामग्री समान नाही) x1x2
false
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};
Arrays.deepEquals(x1, x2);


true(सामग्री समान आहेत)