Οι κορυφαίες 50 ερωτήσεις και απαντήσεις για συνεντεύξεις σε πίνακα (2025)

Ακολουθούν ερωτήσεις και απαντήσεις συνέντευξης Array για νεοφώτιστους καθώς και έμπειρους υποψηφίους για να πάρουν τη δουλειά των ονείρων τους. Οι πίνακες αποτελούν αναπόσπαστο μέρος του προγραμματισμού και διάφορες γλώσσες κωδικοποίησης όπως η C, η C++, η Python, η Java και η Perl χρησιμοποιούν πίνακες.

1) Τι εννοείτε με τον όρο Array;

  • Ο πίνακας είναι ένα σύνολο παρόμοιου τύπου δεδομένων.
  • Τα αντικείμενα Array αποθηκεύουν πολλές μεταβλητές με τον ίδιο τύπο.
  • Μπορεί να περιέχει πρωτόγονους τύπους και αναφορές αντικειμένων.
  • Οι πίνακες είναι πάντα σταθεροί

Δωρεάν λήψη PDF: Ερωτήσεις & Απαντήσεις Συνέντευξης Array


2) Πώς να δημιουργήσετε έναν πίνακα;

Ένας πίνακας δηλώνεται παρόμοιος με τον τρόπο που δηλώνεται μια μεταβλητή, αλλά πρέπει να προσθέσετε [] μετά τον τύπο. Παράδειγμα: int [] intArray; Μπορούμε να δηλώσουμε έναν πίνακα Java ως πεδίο, στατικό πεδίο, τοπική μεταβλητή ή παράμετρο, όπως οποιαδήποτε άλλη μεταβλητή. Ένας πίνακας είναι μια συλλογή μεταβλητών αυτού του τύπου. Ακολουθούν μερικά ακόμη παραδείγματα δήλωσης πίνακα Java:

String [] stringArray;
MyClass [] myClassArray;

Το ίδιο συμβαίνει και με άλλες γλώσσες προγραμματισμού.


3) Πλεονεκτήματα και μειονεκτήματα του Array;

Φόντα:

  • Μπορούμε να τοποθετήσουμε άλλες δομές δεδομένων όπως στοίβες, ουρές, συνδεδεμένες λίστες, δέντρα, γραφήματα κ.λπ. στο Array.
  • Οι πίνακες μπορούν να ταξινομήσουν πολλά στοιχεία ταυτόχρονα.
  • Μπορούμε να έχουμε πρόσβαση σε ένα στοιχείο του Array χρησιμοποιώντας ένα ευρετήριο.

μειονεκτήματα:

  • Πρέπει να δηλώσουμε το μέγεθος ενός πίνακα εκ των προτέρων. Ωστόσο, μπορεί να μην γνωρίζουμε τι μέγεθος χρειαζόμαστε τη στιγμή της δήλωσης του πίνακα.
  • Ο πίνακας είναι στατική δομή. Σημαίνει ότι το μέγεθος του πίνακα είναι πάντα σταθερό, επομένως δεν μπορούμε να αυξήσουμε ή να μειώσουμε την κατανομή μνήμης.

4) Μπορούμε να αλλάξουμε το μέγεθος ενός πίνακα κατά την εκτέλεση;

Όχι, δεν μπορούμε να αλλάξουμε το μέγεθος του πίνακα. Αν και υπάρχουν διαθέσιμοι παρόμοιοι τύποι δεδομένων που επιτρέπουν μια αλλαγή στο μέγεθος.

Ερωτήσεις συνέντευξης πίνακα
Ερωτήσεις συνέντευξης πίνακα

5) Μπορείτε να δηλώσετε έναν πίνακα χωρίς να εκχωρήσετε το μέγεθος ενός πίνακα;

Όχι, δεν μπορούμε να δηλώσουμε έναν πίνακα χωρίς να ορίσουμε μέγεθος. Αν δηλώσουμε έναν πίνακα χωρίς μέγεθος, θα εμφανιστεί σφάλμα χρόνου μεταγλώττισης. Παράδειγμα: marks = new int []; //ΣΦΑΛΜΑ ΜΕΤΑΓΡΑΦΗΤΗ


6) Ποια είναι η προεπιλεγμένη τιμή του Array;

Οποιοσδήποτε νέος πίνακας αρχικοποιείται πάντα με μια προεπιλεγμένη τιμή ως εξής

  • Για byte, short, int, long – η προεπιλεγμένη τιμή είναι μηδέν (0).
  • Για float, διπλή - η προεπιλεγμένη τιμή είναι 0.0.
  • Για Boolean - η προεπιλεγμένη τιμή είναι false.
  • Για αντικείμενο - η προεπιλεγμένη τιμή είναι null.

7) Πώς να εκτυπώσετε το στοιχείο του Array;

Εδώ είναι ο κώδικας για την εκτύπωση του στοιχείου του πίνακα.

int schoolmarks [] = {25, 30, 50, 10, 5 };

System.out.println (Arrays.toString (schoolmarks));

Η έξοδος είναι: [25, 30, 50, 10, 5]

Στοιχείο πίνακα


8) Πώς να συγκρίνετε δύο πίνακες;

Εάν 2 πίνακες είναι ίδιου μεγέθους και τύπου δεδομένων, τότε η σύγκριση μπορεί να γίνει χρησιμοποιώντας το "Arrays.equal ()"

int [] num1 = { 1, 2, 3 };

int[] num2 = { 4, 5, 6 };

System.out.println (Arrays. Equals (num1, num2)); //false

Int [] num3 = {1, 2, 3};

System.out.println (Arrays.equals (num1, num3)); //true

9) Πώς να ταξινομήσετε έναν πίνακα;

Είναι δυνατό χρησιμοποιώντας την ενσωματωμένη στατική μέθοδο που είναι Arrays. ταξινόμηση ().

Int Marks [] = {12, 5, 7, 9};

Arrays.sort(Marks);

System.out.println(Arrays.toString(Marks));//[5, 7, 9, 12]

10) Μπορούμε να δηλώσουμε το μέγεθος του πίνακα ως αρνητικό αριθμό;

Όχι. Δεν μπορούμε να δηλώσουμε τον αρνητικό ακέραιο ως μέγεθος πίνακα. Αν το δηλώσουμε, δεν θα υπάρξει σφάλμα χρόνου μεταγλώττισης. Ωστόσο, θα λάβουμε NegativeArraySizeException κατά τον χρόνο εκτέλεσης.


11) Πότε θα λάβουμε το ArrayStoreException;

Είναι μια εξαίρεση χρόνου εκτέλεσης. Για παράδειγμα, μπορούμε να αποθηκεύσουμε μόνο στοιχεία συμβολοσειράς σε έναν πίνακα συμβολοσειρών. Εάν κάποιος προσπαθήσει να εισαγάγει ακέραιο στοιχείο σε αυτόν τον πίνακα συμβολοσειρών, τότε θα λάβουμε το ArrayStoreException κατά την εκτέλεση.


12) Μπορούμε να προσθέσουμε ή να διαγράψουμε ένα στοιχείο μετά την ανάθεση ενός πίνακα;

Όχι δεν γίνεται.


13) Ποια είναι η έννοια του ανώνυμου πίνακα; Εξηγήστε με ένα παράδειγμα;

Ανώνυμος πίνακας σημαίνει πίνακας χωρίς καμία αναφορά. Παράδειγμα:-

//Creating anonymous arrays

System.out.println(new int[]{11, 12, 13, 14, 15}.length); //Output : 5

System.out.println(new int[]{31, 94, 75, 64, 41}[1]); //Output : 94 }}

14) Υπάρχει διαφορά μεταξύ int[] a και int a[];

Καμία διαφορά είναι και τα δύο νομικός δήλωση.


15) Υπάρχουν 2 τύποι δεδομένων πίνακα τύπου int. Το ένα περιέχει 50 στοιχεία και το άλλο περιέχει 30 στοιχεία. Μπορούμε να αντιστοιχίσουμε τον πίνακα των 50 στοιχείων σε έναν πίνακα 30 στοιχείων;

Ναι, μπορούμε να εκχωρήσουμε υπό την προϋπόθεση ότι θα πρέπει να είναι του ίδιου τύπου. Ο μεταγλωττιστής θα ελέγξει τον μοναδικό τύπο του πίνακα, όχι το μέγεθος.

int[] ab = new int[30];

int[] cd = new int[50];

a = b; //Compiler checks only type, not the size

16) int a[] = νέος int[3]{1, 2, 3} – είναι ο σωστός τρόπος για να δηλώσετε πίνακες στη java;

Όχι. Δεν πρέπει να αναφέρουμε το μέγεθος του πίνακα όταν παρέχουμε τα στοιχεία του πίνακα.


17) Πώς να αντιγράψετε έναν πίνακα σε έναν άλλο πίνακα;

Παρακάτω τέσσερα κόλπα είναι διαθέσιμα σε java για την αντιγραφή ενός πίνακα.

  1. Χρήση "Για βρόχο"
  2. Χρησιμοποιώντας τη μέθοδο "Arrays.copyOf()".
  3. Χρησιμοποιώντας τη μέθοδο "System.arraycopy()".
  4. Χρησιμοποιώντας τη μέθοδο "clone()".

18) Τι είναι οι «οδοντωτοί» πίνακες στη java;

Οι οδοντωτοί πίνακες είναι πίνακες που περιέχουν πίνακες διαφορετικού μήκους. Οι οδοντωτοί πίνακες είναι επίσης γνωστοί ως πολυδιάστατοι πίνακες.


19) Πότε εμφανίζεται ArrayIndexOutOfBoundsException;

Πρόκειται για μια εξαίρεση κατά τον χρόνο εκτέλεσης. Θα συμβεί όταν το πρόγραμμα προσπαθήσει να αποκτήσει πρόσβαση σε μη έγκυρο ευρετήριο ενός πίνακα. Ευρετήριο υψηλότερο από το μέγεθος του πίνακα ή αρνητικό ευρετήριο.


20) Μπορείτε να εξηγήσετε τα διάφορα βήματα της δήλωσης πολυδιάστατων πινάκων στην Java;

//2D Arrays

int[][] twoArray1;

int twoArray2[][];

int[] twoArray3[];

//3D Arrays

int[][][] threeArray1;

int threeArray2[][][];

int[] threeArray3[][];

int[][] threeArray4[];

//4D Arrays

int[][][][] fourArray1;

int fourArray2[][][][];

int[] fourArray3[][][];

int[][] fourArray4[][];

int[][][] fourArray5[];

21) Πώς αναζητούμε ένα συγκεκριμένο στοιχείο σε έναν πίνακα;

Μπορούμε να χρησιμοποιήσουμε τη μέθοδο Arrays.binarySearch(). Αυτή η μέθοδος χρησιμοποιεί αλγόριθμο δυαδικής αναζήτησης.


22) Αν δεν αρχικοποιήσετε έναν πίνακα τι θα συμβεί;

Ο πίνακας θα έχει προεπιλεγμένη τιμή.


23) Πώς βρίσκουμε διπλά στοιχεία σε έναν πίνακα;

Χρησιμοποιώντας τη μέθοδο Brute Force: Σε αυτήν τη μέθοδο, συγκρίνουμε κάθε στοιχείο ενός πίνακα με άλλα στοιχεία. Εάν δύο στοιχεία βρεθούν ίσα ή ίδια, τα δηλώνουμε ως διπλότυπα. Παρακάτω θα βρείτε τον κώδικα για το ίδιο στοιχείο.

public class DuplicatesInArray {

public static void main(String[] args) {

String[] strArray1 = {"abc1", "def1", "mno1", "xyz1", "pqr1", "xyz1", "def1"};

for (int i = 0; i < strArray1.length-1; i++) {

for (int j = i+1; j < strArray1.length; j++) {

if( (strArray1[i].equals(strArray1[j])) && (i != j) ) {

System.out.println("Duplicates : "+strArray1[j]);

}}}} }

Έξοδος: Το διπλότυπο στοιχείο είναι: def1 Το διπλότυπο στοιχείο είναι: xyz1


24) Μπορούμε να χρησιμοποιήσουμε Generics με τον πίνακα;

Όχι, δεν μπορούμε να χρησιμοποιήσουμε το Generic με έναν πίνακα.


25) Πώς να επαναλάβω έναν πίνακα στη java;

1) Χρήση κανονικού βρόχου for

public class MainClass1

{

public static void main(String[] args)

{

int[] a1 = new int[]{45, 12, 78, 34, 89, 21};

//Iterating over an array using normal for loop

for (int i = 0; i < a1.length; i++)

{

System.out.println(a1[i]);

}}}

2) Χρήση εκτεταμένου νέου βρόχου for

public class MainClass1

{

public static void main(String[] args)
{
int[] a2 = new int[]{45, 12, 78, 34, 89, 21};

//Iterating over an array using extended for loop

for (int i: a2){

System.out.println(i);

}}}

26) Πού εκχωρείται η μνήμη για πίνακες στην Java;

Στην Java, η μνήμη για τους πίνακες εκχωρείται πάντα στο σωρό καθώς οι πίνακες στην Java είναι αντικείμενα.


27) Μπορείτε να μου πείτε το όνομα κλάσης ενός πίνακα σε Java;

Ο πίνακας είναι ένα αντικείμενο. Για να αποσύρουμε το όνομα της κλάσης μπορούμε να χρησιμοποιήσουμε τη μέθοδο getClass().getName() στο αντικείμενο.


28) “int a[] = new int[3]{1, 2, 3}” – Είναι νόμιμος τρόπος ορισμού των πινάκων;

Όχι. Δεν πρέπει να δηλώνουμε το μέγεθος του πίνακα όταν παρέχουμε τα στοιχεία του πίνακα.


29) Τι είναι ο δισδιάστατος πίνακας;

Ένας πίνακας ενός πίνακα σε Java. Μπορούμε να τους δηλώσουμε σαν

int[][] p = new int[3][3]

που είναι ένας πίνακας 3×3.


30) Έχουμε τρισδιάστατους πίνακες στην Java;

Ναι, η Java υποστηρίζει πίνακες N-διαστάσεων. Ο πολυδιάστατος πίνακας στην Java δεν είναι τίποτα άλλο παρά ένας πίνακας από πίνακες. Παράδειγμα: Ο δισδιάστατος πίνακας είναι ένας πίνακας από μονοδιάστατους πίνακες.


31) Μπορούμε να κάνουμε τον πίνακα πτητικό στην Java;

Ναι, μπορούμε να κάνουμε έναν πίνακα πτητικό στην Java, αλλά κάνουμε πτητική μόνο τη μεταβλητή που δείχνει προς τον πίνακα.


32) Ποια θα είναι η έξοδος του παρακάτω κώδικα;

int myArr[] = new int [7];

System.out.print(myArr);

Απ: Η έξοδος θα είναι η τιμή garbage. Το myArr είναι μια μεταβλητή πίνακα, το myArr δείχνει σε έναν πίνακα εάν είναι ακέραιοι αριθμοί. Η εκτύπωση του myArr θα εκτυπώσει την τιμή garbage. Δεν είναι το ίδιο με την εκτύπωση του myArr[0].


33) Ποιο είναι το βήμα για την πρόσβαση σε στοιχεία ενός πίνακα σε Java;

Μπορούμε να έχουμε πρόσβαση χρησιμοποιώντας το "index". Το index ξεκινά από το Zero(0), επομένως το πρώτο στοιχείο αποθηκεύεται στη θέση μηδέν και το τελευταίο στοιχείο θα είναι Array.length – 1. Παράδειγμα:- Σειρά χαρακτήρων strArr[] = new Σειρά χαρακτήρων []{“A”, “B”, “C”, “D”, “E”}; strArr[0] σημαίνει “A” και strArr[2] σημαίνει “C”.


34) Μπορείτε να μου πείτε τις διαφορές μεταξύ Array και ArrayList;

Παράταξη Λίστα Array
Ο πίνακας είναι στατικός με σταθερό μέγεθος το οποίο δεν μπορεί να αλλάξει μετά την αφή. Το ArrayList δεν είναι στατικό αλλά δυναμικό σε μέγεθος. Καθώς προστίθενται στοιχεία σε μια ArrayList, η χωρητικότητα ή το μέγεθός της αυξάνεται αυτόματα.
Περιέχει τόσο πρωτόγονους τύπους δεδομένων όσο και αντικείμενα μιας κλάσης. Το ArrayList δεν περιέχει τους πρωτόγονους τύπους δεδομένων αλλά περιέχει καταχωρήσεις αντικειμένων.
Ο πίνακας δεν έχει τη δυνατότητα Generics. Το ArrayList διαθέτει λειτουργία Γενόσημων Φαρμάκων.

35) Γνωρίζουμε ότι οι Πίνακες είναι αντικείμενα, οπότε γιατί δεν μπορούμε να γράψουμε strArray.length();

Οι πίνακες είναι αναφορές αντικειμένων όπως κλάσεις στην Java. Μπορούμε να χρησιμοποιήσουμε τις μεθόδους του Object όπως το toString () και ένα άλλο hashCode () έναντι του Array. Το μήκος είναι ένα στοιχείο δεδομένων ενός πίνακα και επομένως δεν είναι μέθοδος. Γι' αυτό χρησιμοποιούμε το strArray.length.


36) Πώς να βρείτε το στοιχείο που λείπει στον ακέραιο πίνακα από το 1 έως το 7;

Οι λύσεις για την επίλυση αυτού του προβλήματος είναι ο υπολογισμός του αθροίσματος όλων των αριθμών στον πίνακα και η σύγκριση με ένα αναμενόμενο άθροισμα, η διαφορά θα ήταν ο αριθμός που λείπει.

int ar [] = new int[]{1,2,3,5,6,7};
  • Λάβετε το άθροισμα των αριθμών
  • σύνολο = n*(n+1)/2
  • Αφαιρέστε όλους τους αριθμούς από το άθροισμα και
  • θα λάβετε τον αριθμό που λείπει.
  • Σύμφωνα με την παρακάτω λογική το sumOfNnumberss είναι 7*(7+1)/2=28

sumOfElements = 1+2+3+5+6+7=24 το στοιχείο που λείπει είναι = 28-24=4

int n = ar.length+1;

int total = n*(n+1)/2;

for(int i =0;i<ar.length;i++){

total -=ar[i];}

System.out.println(total);

37) Πώς να βρείτε το αντίγραφο σε έναν πίνακα;

String str = "HI RAHUL I AM FINE RAHUL"; // String with a duplicate word.

String[] words = str.split(" "); // Splitting and converting to Array .

for(int i = 0; i < words.length; i++){ //iterating array inside for loop

for(int j = i+1; j < words.length; j++){ //iterating same array inside another for loop

if (words[i].equals(words[j])){ // Using equal method i am verifying which word is repeating . System.out.println( words[i]); // here it will print duplicate .

}}}

38) Πώς να ελέγξετε ότι ο πίνακας περιέχει τιμή ή όχι;

Εδώ είναι μια συμβολοσειρά[] με τιμές

public static final String[] myNames = new String[] {"B","A","K","C"};

Αν η myNames περιέχει αυτήν την τιμή, τότε θα επιστρέψει true, διαφορετικά false. Ακολουθούν δύο μέθοδοι isExists() και contains() όπου και οι δύο μέθοδοι επιστρέφουν true αν η τιμή είναι διαθέσιμη, διαφορετικά false. Πρώτη μέθοδος Μετατρέπει έναν πίνακα σε ArrayList. Στη συνέχεια, θα ελέγξει αν ένας πίνακας περιέχει κάποια τιμή και θα επιστρέψει true, διαφορετικά false.

public static <T> boolean isExists(final T[] array, final T object) {

return Arrays.asList(array).contains(object); }

Δεύτερη μέθοδος Αυτή η μέθοδος εκτελεί επανάληψη σε έναν πίνακα και χρησιμοποιεί τη μέθοδο equal() για την αναζήτηση στοιχείου. Στην πραγματικότητα, εκτελεί μια γραμμική αναζήτηση σε έναν πίνακα σε Java. Θα επιστρέψει true εάν ένας πίνακας έχει δώσει τιμή.

public static <T> boolean contains(final T[] array, final T v) {

for (final T e : array) { if (e == v || v != null && v.equals(e)) {

return true;

} }

return false;

} }

39) Πώς να πάρετε τον μεγαλύτερο και τον μικρότερο αριθμό σε έναν πίνακα;

Απάντηση: Η λογική αυτού του προβλήματος:

  • Χρησιμοποιούμε δύο μεταβλητές για να αποθηκεύσουμε τον μεγαλύτερο και τον μικρότερο αριθμό.
  • Αρχικά, αρχικοποιούμε το μεγαλύτερο με Integer.MIN_VALUE και
  • Στη συνέχεια, αρχικοποιούμε το smallest με Integer.MAX_VALUE.
  • Σε κάθε επανάληψη του βρόχου for, θα συγκρίνουμε τον παρόντα αριθμό με τον μεγαλύτερο και τον μικρότερο αριθμό και θα ενημερώσουμε
  • Εάν ένας αριθμός είναι μεγαλύτερος από τον μεγαλύτερο, τότε δεν μπορεί να είναι μικρότερος από τον μικρότερο. Αυτό σημαίνει ότι δεν χρειάζεται να ελέγξετε εάν η πρώτη συνθήκη είναι αληθής,
  • Θα χρησιμοποιήσουμε το μπλοκ κώδικα if-else, όπου αλλού το τμήμα θα εκτελεστεί μόνο εάν η πρώτη συνθήκη είναι false σημαίνει ότι δεν είναι αληθές.
import java.util.Arrays;

public class MaximumMinimumArrayExample{

public static void largestAndSmallest(int[] numbers) {

int largest = Integer.MIN_VALUE;

int smallest = Integer.MAX_VALUE;

for (int number : numbers) {

if (number > largest) {

largest = number;

}

else if (number < smallest) {

smallest = number;

} }
System.out.println("Largest is : " + largest);

System.out.println("Smallest is : " + smallest); } }

40) Πώς γίνεται η τομή δύο ταξινομημένων πινάκων;

Απ.: Λογική: εκτυπώστε το στοιχείο εάν το στοιχείο είναι παρόν ή διαθέσιμο και στους δύο πίνακες.

  • Χρησιμοποιήστε δύο μεταβλητές ευρετηρίου i και j, μετά αρχίστε τις τιμές i = 0, j = 0
  • Εάν το arr01 [i] είναι μικρότερο από το arr02 [j] τότε προσαύξηση i.
  • Εάν το arr01 [i] είναι μεγαλύτερο από το arr02 [j] τότε προσαύξηση j.
  • Εάν και τα δύο είναι ίδια, τότε εκτυπώστε κάποιο από αυτά και αυξήστε το i και το j.
public static void getIntersection(int arr01[], int arr02[], int m, int n){

int i = 0, j = 0;

while (i < m && j < n){

if (arr01[i] < arr02[j])

i++;

else if (arr02[j] < arr01[i])

j++;

else{

System.out.print(arr02[j++]+" ");

i++;

}

}

}

public static void main(String args[]){

int arr01[] = {1, 2, 4, 5, 6};

int arr02[] = {2, 3, 5, 7};

int m = arr01.length;

int n = arr02.length;

getIntersection(arr01, arr02, m, n);

}

41) Πώς να λάβετε τους δύο κορυφαίους αριθμούς από έναν πίνακα;

Απ.: Η λογική είναι:

  • Θα εκχωρήσουμε την πρώτη μεταβλητή max01 με Integer.MIN_VALUE

Επιπλέον, η δεύτερη μεταβλητή max02 με ίδια με τη max01 που είναι Integer.MIN_VALUE.

  • Θα επαναλάβουμε αυτόν τον πίνακα και θα συγκρίνουμε κάθε αριθμό με το max01 και το max02,
  • Εάν ο τρέχων αριθμός είναι μεγαλύτερος από το max1, τότε αντιστοιχίστε max01 = αριθμός και max02 = max1.
  • Διαφορετικά, εάν είναι μόνο μεγαλύτερο από το max02, τότε θα ενημερώσουμε μόνο το max02 με τον τρέχοντα αριθμό.
  • Στο τέλος μιας επανάληψης, οι max01 και max02 δείχνουν στους δύο κορυφαίους αριθμούς από τον δεδομένο πίνακα.
import java.util.Arrays;

public class TopTwoMaximumNumbers{

public static void main(String args[]) {

topTwoNumbers(new int[]{20, 34, 21, 87, 92, Integer.MAX_VALUE});

topTwoNumbers(new int[]{0, Integer.MIN_VALUE, -2});

topTwoNumbers(new int[]{Integer.MAX_VALUE, 0, Integer.MAX_VALUE});

topTwoNumbers(new int[]{1, 1, 0}); }

public static void topTwoNumbers(int[] numbers) {

int max01 = Integer.MIN_VALUE;

int max02 = Integer.MIN_VALUE; for (int number : numbers) {

if (number > max01) { max02 = max01; max01 = number; }

else if (number > max02) { max02 = number; } }

System.out.println("First largest number is : " + max01);

System.out.println("Second largest number is : " + max02); } }

42) Πώς να κόψετε ή να αφαιρέσετε ένα στοιχείο από τον πίνακα;

Απάντηση: Η λογική είναι: Μπορούμε να αφαιρέσουμε ή να αποκόψουμε ένα στοιχείο χρησιμοποιώντας το Apache Commons ArrayUtils με βάση ένα ευρετήριο. Το ArrayUtils έχει αρκετές υπερφορτωμένες μεθόδους remove().

import java.util.Arrays;

import org.apache.commons.lang.ArrayUtils;

public class RemoveFromArray{

public static void main(String args[]) {

//let's create an array for demonstration purpose

int[] testArr = new int[] { 10, 102, 13, 14, 105};

System.out.println("Array size : " + testArr.length );

System.out.println("Find Contents : " + Arrays.toString(testArr));

//let's remove or delete an element from Array using Apache Commons ArrayUtils

testArr = ArrayUtils.remove(testArr, 2); //removing element at index 2

//Size of array must be 1 less than original array after deleting an element

System.out.println("Size of array after removing : " + testArr.length);

System.out.println("Content of Array : "+ Arrays.toString(testArr));

} }

43) Ποια είναι η λογική για την αντιστροφή του πίνακα;

Απ.: Λογική: εκτυπώστε το στοιχείο με αντίστροφη σειρά.

  • Δήλωση α
String Array String[] s = new String[]{"My","Leg","is","cut"};
  • Επαναλάβετέ το χρησιμοποιώντας για βρόχο λήψης όλων των στοιχείων με αντίστροφη σειρά, σημαίνει από σημείο τερματισμού σε σημείο έναρξης.
public static void main(String[] args)

{String[] s = new String[]{"My","Leg","is","cut"};

for(int i=s.length-1; i>=0; i--){

System.out.println("reverse "+s[i]);}}

44) Πώς βρίσκετε το δεύτερο μεγαλύτερο στοιχείο σε έναν πίνακα ακεραίων;

Απ.: Η λογική είναι:

  • Επαναλάβετε τον δεδομένο πίνακα χρησιμοποιώντας τον βρόχο for.
  • (πρώτη εάν συνθήκη arr[i] > μεγαλύτερη):
  • Εάν η τρέχουσα τιμή του πίνακα είναι μεγαλύτερη από τη μεγαλύτερη τιμή τότε
  • Μετακινήστε τη μεγαλύτερη τιμή στο secondLargest και ορίστε την τρέχουσα τιμή ως μεγαλύτερη
  • (δεύτερη εάν συνθήκη arr[i] > δεύτερος Μεγαλύτερος )
  • Εάν η τρέχουσα τιμή είναι μικρότερη από τη μεγαλύτερη και

μεγαλύτερο από το secondLargest τότε γίνεται η τρέχουσα τιμή

public static void main(String[] args) {

int myArr[] = { 14, 46, 47, 86, 92, 52, 48, 36, 66, 85 };

int largest = myArr[0];

int secondLargest = myArr[0];

System.out.println("The given array is:" );

for (int i = 0; i < myArr.length; i++) {

System.out.print(myArr[i]+"\t");

}

for (int i = 0; i < myArr.length; i++) {

if (myArr[i] > largest) {

secondLargest = largest;

largest = myArr[i];

} else if (myArr[i] > secondLargest) {secondLargest = myArr[i];

}}

System.out.println("\nSecond largest number is:" + secondLargest);

}

45) Γράψτε ένα πρόγραμμα για να αθροίσετε τις τιμές του δεδομένου πίνακα.

Απ.: Η λογική είναι:

  • Δηλώστε και εκχωρήστε τη μεταβλητή int που είναι άθροισμα =0.
  • Επαναλάβετε τον δεδομένο πίνακα χρησιμοποιώντας τον βρόχο for.
  • Προσθέστε όλο το στοιχείο του πίνακα και κρατήστε σε αυτή τη μεταβλητή που είναι το άθροισμα.
Public static void main(String[] args) {

int my_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

int sum = 0;

for (int i: my_array)

sum += i;

System.out.println("The sum is " + sum);

}

46) Πώς διαχωρίζετε τα μηδενικά από τα μη μηδενικά σε έναν πίνακα;

Απ.: Η λογική είναι:

  • Αρχικοποίηση μετρητή στο 0
  • Διέλευση του inputArray από αριστερά προς τα δεξιά
  • Εάν το inputArray[i] είναι μη μηδενικό
  • Εκχώρηση inputArray[i] στον inputArray[counter]
  • Αύξηση του μετρητή κατά 1
  • Εκχώρηση μηδέν στα υπόλοιπα στοιχεία
Public class SeparateZerosFromNonZeros

{ static void moveZerosToEnd(int inputArray[]) { int counter = 0;

for (int i = 0; i < inputArray.length; i++)

{

if(inputArray[i] != 0) {

inputArray[counter] = inputArray[i];

counter++;

} }

while (counter < inputArray.length) {

inputArray[counter] = 0;

counter++; }

System.out.println(Arrays.toString(inputArray));

}

public static void main(String[] args) {

moveZerosToEnd(new int[] {12, 0, 7, 0, 8, 0, 3});

moveZerosToEnd(new int[] {1, -5, 0, 0, 8, 0, 1});

moveZerosToEnd(new int[] {0, 1, 0, 1, -5, 0, 4});

moveZerosToEnd(new int[] {-4, 1, 0, 0, 2, 21, 4});

} }

47) Γράψτε ένα πρόγραμμα για να εισάγετε ένα στοιχείο και στη συγκεκριμένη θέση στον πίνακα;

Απ.: Η λογική είναι:

  • Εισαγάγετε ένα στοιχείο στην 3η θέση του πίνακα (δείκτης->2, τιμή->5)
  • Επαναλάβετε τον δεδομένο πίνακα με αντίστροφη σειρά χρησιμοποιώντας βρόχο for.
  • Τώρα εισαγάγετε τη δεδομένη θέση και τιμή μετά τον βρόχο for.
Public static void main(String[] args) {

int[] my_array = {25, 14, 56, 15, 36, 56, 77, 18, 29, 49};

int Index_position = 2;

int newValue = 5;

System.out.println("Original Array : "+Arrays.toString(my_array));

for(int i=my_array.length-1; i > Index_position; i--){

my_array[i] = my_array[i-1];
}my_array[Index_position] = newValue;

System.out.println("New Array: "+Arrays.toString(my_array));

}

48) Πώς να πάρετε το ευρετήριο ενός στοιχείου πίνακα;

Απ.: Η λογική είναι:

  • Σε κάθε βήμα, ελέγχει την τιμή του κλειδιού εισόδου με την τιμή του μεσαίου στοιχείου ενός πίνακα.
  • Εάν τα πλήκτρα ταιριάζουν, τότε θα επιστρέψει στη θέση. Σε άλλη περίπτωση, εάν το κλειδί είναι μικρότερο από το κλειδί του μεσαίου στοιχείου,
  • Στη συνέχεια θα επαναλάβει τον βρόχο while. Εάν αναζητηθεί ο υπόλοιπος πίνακας και μειωθεί στο μηδέν, θα επιστρέψει -1 σημαίνει ότι δεν βρέθηκε
public static int findIndex (int[] my_array, int t) {

int startPoint = 0;

int endPoint = my_array.length - 1;

while (startPoint <= endPoint) {

int mid = (startPoint + end) / 2;

if (key == my_array[mid]) {

return mid;

}

if (key < my_array[mid]) {

endPoint = mid - 1;
} else {

startPoint = mid + 1;

}

}

return -1;

}

Public static void main(String[] args) {

int[] arr = {2, 4, 6, 8, 10, 12, 14, 16};

System.out.println("Key 14's position: "findIndex(arr, 14));

int[] arr1 = {6,34,78,123,432,900};

System.out.println("Key 432's position: "+findIndex(arr1, 432));

}

49) Μπορούμε να επεκτείνουμε έναν πίνακα μετά την αρχικοποίηση;

Απάντηση: Η λογική είναι: Μπορούμε να επεκτείνουμε έναν πίνακα μετά την αρχικοποίηση προσθέτοντας έναν νέο πίνακα. Δείτε το παρακάτω παράδειγμα.

Public static void main(String[] args) {

String [] names = new String[] { "A", "B", "C" };

String [] extended = new String[5];

extended [3] = "D";

extended [4] = "E";

System.arraycopy(names, 0, extended, 0, names.length);

//here we are extending with new array extended[3] and extended[4].

for (String str: extended){

System.out.println(str);

}

}

Η έξοδος είναι A,B,C,D,E.


50) Πώς να γεμίσετε ένα στοιχείο (αρχικοποιήσετε αμέσως) σε έναν πίνακα;

Απ: Αυτό το παράδειγμα fill(αρχικοποιεί όλα τα στοιχεία του πίνακα σε μία συντομία) έναν πίνακα χρησιμοποιώντας τη μέθοδο Array.fill(όνομα πίνακα,τιμή) και τη μέθοδο Array.fill(όνομα πίνακα, αρχικός δείκτης, τελικός δείκτης, τιμή) της κλάσης Java Util.

import java.util.*;

public class FillTest {

public static void main(String args[]) {

int array[] = new int[6];

Arrays.fill(array, 100);

for (int i = 0, n = array.length; i < n; i++) {

System.out.println(array[i]);

}

System.out.println();

Arrays.fill(array, 3, 6, 50);

for (int i = 0, n = array.length; i< n; i++) {

System.out.println(array[i]);}}}

έξοδος είναι

100,100,100,100,100,100

100,100,100,50,50,50
Κοινοποίηση

2 Σχόλια

  1. Avatar Shreyansh λέει:

    Τι γίνεται με τη μετάδοση του πίνακα ως παραμέτρων σε συναρτήσεις

  2. Avatar Arymanu singh λέει:

    Q14 διαφορά μεταξύ a[] και []a

    Μετά την πρώτη δήλωση τύπου δεν μπορείτε να δημιουργήσετε άλλη (ίδιου τύπου δεδομένων) πίνακα.
    Μπορείτε όμως μετά από δήλωση δεύτερου τύπου δηλ.
    Int []a, b, c= new int[μέγεθος]

Αφήστε μια απάντηση

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται *