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

vector[ ] in java


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

Δημοσ.

Η κλάση Vector είναι στην ουσία ένας δυναμικός πίνακας. Όταν δημιουργείς έναν πίνακα, δεν μπορείς να του αλλάξεις το μέγιστο μέγεθος ούτε και το τι στοιχεία περιέχει. Με την κλάση Vector μπορείς να προσθέτεις και να αφαιρείς στοιχεία συνεχώς. Βέβαια η Vector είναι ξεπερασμένη πλέον καθώς υπάρχουν πιο αποδοτικές κλάσεις (πχ ArrayLists, LinkedLists κ.α. ανάλογα με το τι ακριβώς θέλεις). Για περισσότερες πληροφορίες κοίταξε και εδώ:

http://download.oracle.com/javase/1,5.0/docs/api/java/util/Vector.html

Δημοσ.

Μάλλον δεν το εξήγησα σωστά. Η κλάση Vector είναι σαν δυναμικός πίνακας. Δηλαδή είναι σαν ένας πίνακας στον οποίο μπορούμε να αυξάνουμε (ή να μειώνουμε) το μέγεθός του ανάλογα με τις ανάγκες μας. Όταν δημιουργείς ένα πίνακα πχ

int[] table = new int[5];

 

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

Vector<Integer> v = new Vector<Integer>();

 

μπορείς να προσθέτεις όσα στοιχεία θέλεις χρησιμοποιώντας τη μέθοδο add, πχ v.add(5). Ελπίζω να το ξεκαθάρισα λιγάκι τώρα....

Δημοσ.

ναι απλα οπως διαβασα το προηγουμενο σου ποστ νομιζα πως αναφεροσουν στον vector που δεν μπορει να μεγαλωσει.

 

 

cheers

Δημοσ.

Από περιέργεια, τι δεν έβγαινε στο Vector που βγήκε στο ArrayList; Στη χρήση είναι πολύ παρόμοια, στην εσωτερική υλοποίησή τους διαφέρουν...

Δημοσ.

ηθελα να αποθηκεύσω 100 τυχαίους αριθμούς στο παιδίο 200 εως 1200 σε ενα vector όπου ο κάθε αριθμός θα υπάρχει μόνο μια φορά, αυξητικά ταξινομιμένους, να τα ταξινομεί με bubble sort και να αφαιρεί όλους τους περιττούς αριθμούς αν θυμάμαι καλά και να εμφανίζει το μέσο όρο εμφάνισης των περιττών .. το ήθελε με vectors αλλά ψάχνοντας κατάλαβα οτι τα arraylists είναι κάτι σαν την "επόμενη γενιά" τους.. περαιτέρο διευκρινίσεις δεν είχα οπότε το στειλα με arraylist.. δεν είχα χρόνο να ψάξω άλλο για να το κάνω με vector :/ ήδη είχα καεί αρκετα με αυτή την άσκηση οπότε... συν ότι τα errors που είχα μου ήταν άγνωστα... οπότε δεν είχα αρκετά δεδομένα για να τα διορθώσω..

Δημοσ.

Ωραία, τώρα που δεν έχεις πρόβλημα χρόνου, νομίζω ότι μπορείς να δοκιμάσεις το εξής: να αντικαταστήσεις απλώς όπου έχεις γράψει ArrayList με Vector. Νομίζω ότι θα τρέξει εξίσου καλά :-)

Δημοσ.

Μια ακόμα μικρή προσθήκη: αν και απαιτείται από ότι κατάλαβα η χρήση Vector σε αυτό που κάνεις, αν δεν χρειαζόταν θα μπορούσες να χρησιμοποιήσεις και implementations του Set interface. Για την ακρίβεια η κλάση TreeSet επιτρέπει μόνο μια φορά να υπάρχει κάποιο αντικείμενο(δεν επιτρέπει διπλότυπα) ενώ τα ταξινομεί με αύξουσα σειρά - χρησιμοποιώντας δηλαδή μια κλάση κερδίζεις αρκετό κώδικα (γιατί φαντάζομαι ότι θα πρέπει να γράψεις κώδικα για ελέγχει διπλότυπα και να τα ταξινομεί με αύξουσα σειρά).

 

Απλά αν χρειαστεί στο μέλλον να ξέρεις ότι υπάρχει και αυτό.

Δημοσ.

Μια ακόμα μικρή προσθήκη: αν και απαιτείται από ότι κατάλαβα η χρήση Vector σε αυτό που κάνεις, αν δεν χρειαζόταν θα μπορούσες να χρησιμοποιήσεις και implementations του Set interface. Για την ακρίβεια η κλάση TreeSet επιτρέπει μόνο μια φορά να υπάρχει κάποιο αντικείμενο(δεν επιτρέπει διπλότυπα) ενώ τα ταξινομεί με αύξουσα σειρά - χρησιμοποιώντας δηλαδή μια κλάση κερδίζεις αρκετό κώδικα (γιατί φαντάζομαι ότι θα πρέπει να γράψεις κώδικα για ελέγχει διπλότυπα και να τα ταξινομεί με αύξουσα σειρά).

 

Απλά αν χρειαστεί στο μέλλον να ξέρεις ότι υπάρχει και αυτό.

Δημοσ.

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

Δημοσ.

Δεν χρειάζεται TreeSet, μπορεί να το κάνει και με ένα απλό HashSet και δεν θα μπλέκει και με δενδροειδής μορφές. Τώρα όσον αφορά το Vector είναι αρκετά απλό στη χρήση του απλά ίσως να είχες πρόβλημα με τον Constructor. Μάλλον έπρεπε να το κάνεις κάπως έτσι

>new Vector<T>(10, 1);

όπου το 10 είναι το αρχικό μέγεθος και το 1 είναι κατά πόσο θα αυξάνεται όταν γεμίζει. Δεν ξέρω βέβαια αν ο απλώς constructor δημιουργεί στατικό Vector παντώς εγώ όταν το χρειάστηκα κάπως έτσι το έκανα και δούλεψε κανονικά.

Δημοσ.

Με βάση τις απαιτήσεις της εφαρμογής του (όπου κάθε αριθμός θα υπάρχει μια μόνο φορά και μάλιστα αυξητικά ταξινομημένοι) η HashSet δεν ενδείκνυται γιατί δεν αποθηκεύει με σειρά τα αντικείμενα που βάζεις. Για την ακρίβεια δεν ξέρεις με ποια σειρά θα είναι μέσα στη HashSet. Αυτήν την Collection (και γενικά όσες έχουν την Hash λογική) την χρησιμοποιείς κυρίως αν θέλεις γρήγορο iteration, με λίγα λόγια αν θέλεις γρήγορα να βάζεις, να βγάζεις και να ψάχνεις τα αντικείμενα που έχεις βάλει. Στην περίπτωση του yincyun η TreeSet είναι καταλληλότερη από από τη HashSet. Αλλά μάλλον ξεφεύγουμε από το κεντρικό θέμα....

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...