strat92man Δημοσ. 16 Μαΐου 2012 Δημοσ. 16 Μαΐου 2012 Καλησπέρα, Θέλω να ρωτήσω κάτι, Έστω οτι θέλω να δημιουργήσω μια ουρά προτεραιότητας στην Java και θα αποθηκεύω δυναμικά τα δεδομένα. Η οποία θα αποθηκεύει π.χ ενα αλφαριθμητικό,ενα ακέραιο και περισσότερες πληροφορίες > public staic void main(String[] args) { PriorityQueue<String,int,...> Queue = new PriorityQueue<String,int,...> Queue.offer("aaaa",123,...); ...... ..... } Είναι σωστό αυτό ;; ή τρομερό λάθος δηλαδή είτε είναι λίστα είτε ούρα οποιαδήποτε Δομή Δεδομένων και θέλω για κάθε "κόμβο" να αποθηκεύσω αρκετούς πρωταρχικούς τύπους ειναι σωστό αυτό ; <String,int,...> Αν ειναι Μ@λ@κ1@ πώς μπορώ να το κάνω διαφορετικά ; thanxs
moukoublen Δημοσ. 16 Μαΐου 2012 Δημοσ. 16 Μαΐου 2012 Να διαχωρίσουμε λίγο τις σκέψεις γιατί δεν σε κατάλαβα πλήρως. Πριν καταλήξουμε στην ουρα προτεραιότητας η ο,τι άλλο. Πρώτα απ όλα απ ότι καταλαβαίνω θες μια οντότητα (η οποια μετά θα μπει σε μια ουρα προτεραιότητας, αδιάφορο για την ώρα) η οποια θα έχει δυο σίγουρα πεδία και -άγνωστο ποσα- επιπλέον. Έτσι; Αυτή η οντότητα πως μπορεί να υλοποιηθεί; Μια πρώτη σκέψη (Μπορεί να υπάρχουν εκατομμύρια καλύτερες) είναι μια class με ένα πεδίο int ένα πεδίο string ένα vector<object> που με boxing θα αποθηκεύεις οτιδήποτε άλλο. Αφού το φτιάξεις αυτό, απόλυτα δομημένα και σωστά, εξετάζεις πια την δημιουργία ουράς προτεραιότητας -ή όποιας άλλης δομής δεδομένων- που θα περιέχει αυτή την οντότητα. Άλλο πράγμα το πως θα είναι αυτή η οντότητα. Άλλο πράγμα μια ουρα προτεραιότητας αυτής της οντότητας. Επαναλαμβάνω. Αν έχω καταλάβει σωστά, γιατί δε κατάλαβα πολύ καλά τι θες. Πάντως αυτό που γραφεις <String,int,...> δεν γίνεται.
computeras13 Δημοσ. 16 Μαΐου 2012 Δημοσ. 16 Μαΐου 2012 Όπως το γράφεις, όχι δεν γίνεται. Θα πρέπει να δημιουργήσεις νέα class με τα πεδία που θέλεις να έχει η κάθε οντότητα. Από εκεί και πέρα όμως για να λειτουργήσει σωστά το PriorityQueue εφόσον δεν θα ξέρει πως να ταξινομήσει τα στοιχεία που δίνεις θα πρέπει να κάνεις κάτι σαν το παρακάτω: > PriorityQueue<Node> pq = new PriorityQueue<Node>(initCapacity, new Comparator<Node>() { public int compare(Node n1, Node n2) { // compare n1 and n2 } }); Στην ουσία θα ορίσεις εσύ τα κριτήρια με το οποία θέλεις να συγκρίνονται τα αντικείμενά σου.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα