Προς το περιεχόμενο

Δυναμικοί πίνακες σε Java?


CHRIS_MALL

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα παιδιά! Γνωρίζει κανείς πως μπορώ να δηλώσω πίνακες στη Java χωρίς να δηλώσω εκ των προτέρων τις διαστάσεις του??

 

δηλαδή όχι με τον κλασικό τρόπο...

 

>double a[][] = new double[100][100];

μιας και δεν γνωρίζω πόσο μεγάλοι μπορούν να είναι οι πίνακες!

 

Ευχαριστώ πολύ και χρόνια πολλά σε όλους!!

Δημοσ.

Η θα φτιαξεις τον πινακα υπερβολικα μεγάλο και θα χρησιμοποιησεις εναν ειδικο χαρακτηρα για να ξερεις ποιο κελι ειναι το τελευταιο η θα χρησιμοποιησεις λιστες που προτεινεται. Το Vector ειναι μαλλον η καλυτερη επιλογη. Για να προσομοιωσεις δισδιαστατο πινακα, ενα Vector απο Vectors.

 

Οι λιστες δεχονται objects αλλα οχι primitive data types. Για να βαλεις double η int θα πρεπει να τα κανεις αντικειμενα (Integer, Double). Δεν ξερω αν γινεται αυτοματα η αν πρεπει να το κανεις εσυ

Δημοσ.

Σόρυ ρε παιδιά, αλλά δεν έχω καταλάβει μηπως θα μπορούσατε να μου πείτε πως θα δηλώσω για παράδειγμα τον παραπάνω πίνακα a ??

 

Ευχαριστώ πολύ

Δημοσ.

Ena paradeigma xrhshs Arraylist: http://www.anyexample.com/programming/java/java_arraylist_example.xml

Anti gia <String> mporeis na baleis <int[]> px:

 

>
import java.util.ArrayList;
import java.util.List;

public class Main {
   public static void main(String[] args) {
       List<int[]> nums = new ArrayList<int[]>();
       nums.add(new int[10]);
       nums.add(new int[100]);
   }  
}

 

PS. Ean se mperdeuoun ta <String> kai <int[]> diabase gia java generics

Δημοσ.

Σε ευχαριστώ πολύ! Όμως δεν καταλαβαίνω πια η διαφορά από το να χρησιμοποιήσω πίνακες? Εμένα με νοιάζει να μην δεσμεύσει από πριν τον χώρο! Για παράδειγμα μπορεί να χρειαστεί ο πίνακας να έχει 5 ή 5000 στοιχεία! Τα στοιχεία τα διαβάζει από ένα αρχείο...

 

Ευχαριστώ πάντως

Δημοσ.

Για java v. <1.5:

 

>
// import java.util.Vector;

Vector v = new Vector();

for (int i=0; i<5000; i++){
   
   Vector v2 = new Vector();
   
   for (int j=0; j<5000; j++)
       v2.add(new Integer(j));
   
   v.add(v2);
}

for (int i=0; i<v.size(); i++){
   
   Vector v2 = (Vector)v.get(i);
   
   for (int j=0; j<v2.size(); j++)
       System.out.println("Vector value ("+i+", "+j+"): "+((Integer)v2.get(i)).intval());    
}

 

Για >=1.5 δες τα generics που αναφέρθηκαν παραπάνω.

Δημοσ.
Σε ευχαριστώ πολύ! Όμως δεν καταλαβαίνω πια η διαφορά από το να χρησιμοποιήσω πίνακες? Εμένα με νοιάζει να μην δεσμεύσει από πριν τον χώρο! Για παράδειγμα μπορεί να χρειαστεί ο πίνακας να έχει 5 ή 5000 στοιχεία! Τα στοιχεία τα διαβάζει από ένα αρχείο...

 

Ευχαριστώ πάντως

 

H diafora einai oti me tous pinakes prepei na dhlwseis to mege8os (toulaxiston gia tin prwth diastash) enw me arraylist mporeis dunamika na pros8eteis stoixeia.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...