racavedigger.com
Daily insights on Bitcoin and crypto markets
  • Facebook
  • Pinterest
  • Home
  • News

Το SATED SET επιτρέπει αντίγραφα?

Νίσα

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

Απαντήθηκε στις 11 Οκτωβρίου 2012 στις 8:07

6,872 4 4 χρυσά κονκάρδες 23 23 ασημένια κονκάρδες 46 46 χάλκινα κονκάρδες

Υπό το πρίσμα της διευκρίνισης, θα σας προτείνω να χρησιμοποιήσετε ένα δέντρο B+. Αυτή η συχνά χρησιμοποιούμενη δομή δεδομένων εγγυάται ταξινομημένη σειρά, επιτρέπει αντίγραφα και παρέχει αποτελεσματικές λειτουργίες εισαγωγής και ενημέρωσης. Προσφέρει επίσης δυνατότητες γρήγορης αναζήτησης και εμβέλειας.

Απαντήθηκε στις 11 Οκτωβρίου 2012 στις 7:41

26.7K 51 51 χρυσά κονκάρδες 182 182 ασημένια κονκάρδες 254 254 χάλκινα κονκάρδες

Θα ήταν εξαιρετικά φορητό με ένα βάζο Mavon και χωρίς εξωτερικές εξαρτήσεις (αν και μια δοκιμή μονάδας CL CL + θα μπορούσε να είναι ωραία, αλλά άλλαξα δοκιμές πίσω στο Junit)

11 Οκτωβρίου 2012 στις 8:59

Μπορείτε να χρησιμοποιήσετε ένα treemap. Εφαρμόζεται με ένα κόκκινο μαύρο δέντρο, επιτρέπει αντίγραφα και προσφέρει λογαριθμική πολυπλοκότητα χρόνου για εργασίες εισαγωγής και αναζήτησης. Επιπλέον, το Treemap περιλαμβάνεται στην τυπική βιβλιοθήκη Java, οπότε δεν θα έχετε εξωτερικές εξαρτήσεις.

Απαντήθηκε στις 11 Οκτωβρίου 2012 στις 8:48

12.9K 11 11 χρυσά κονκάρδες 57 57 ασημένια κονκάρδες 77 77 χάλκινα κονκάρδες

Όσον αφορά την απόδοση: Το LinkedList είναι πιο αργό. Τότε έρχεται ArrayList. Η άλλη κλίμακα υλοποιήσεων με τον αριθμό των στοιχείων.

11 Οκτωβρίου 2012 στις 7:10

Η χρήση ενός LinkedList ή ArrayList και ταξινόμησης πριν από κάθε λειτουργία αναζήτησης θα ήταν πράγματι αναποτελεσματική. Εάν θέλετε μια ταξινομημένη συλλογή που επιτρέπει αντίγραφα και παρέχει γρήγορη εισαγωγή και ενημέρωση, μπορείτε να εξετάσετε τη χρήση μιας λίστας παραλείψεων. Έχει παρόμοια πολυπλοκότητα χρόνου ως ισορροπημένο δυαδικό δέντρο αναζήτησης, αλλά αποφεύγει τις εργασίες εξισορρόπησης.

Απαντήθηκε στις 11 Οκτωβρίου 2012 στις 8:33

34.7K 49 49 χρυσά κονκάρδες 129 129 ασημένια κονκάρδες 158 158 χάλκινα κονκάρδες

Έχετε πολλές επιλογές για ταξινομημένες συλλογές που επιτρέπουν αντίγραφα. Μερικές από τις δημοφιλείς επιλογές είναι:

  • Treeset: εφαρμόζει τη διεπαφή ταξινόμησης στη Java. Υποστηρίζεται από ένα Treemap και παρέχει αποτελεσματική εισαγωγή, διαγραφή και εργασίες αναζήτησης.
  • Treemultiset (από το Guava): Αυτή η κλάση παρέχει μια ταξινομημένη συλλογή που επιτρέπει αντίγραφα χρησιμοποιώντας ένα υποστηριζόμενο Treemultiset.
  • ConcurrentsKiplistset: Είναι μια ταυτόχρονη εφαρμογή της διασύνδεσης ταξινόμησης. Χρησιμοποιεί μια λίστα παραλείψεων ως υποκείμενη δομή δεδομένων.
  • B+ Tree: Ένα δέντρο αναζήτησης αυτο-εξουσίας που χρησιμοποιείται συνήθως στις βάσεις δεδομένων για την παροχή γρήγορων αναζητήσεων κλειδιού-τιμής.

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

Απαντήθηκε στις 29 Ιουνίου 2021 στις 9:20

1,781 3 3 χρυσά κονκάρδες 11 11 ασημένια κονκάρδες 30 30 χάλκινα κονκάρδες

Java: Η ταξινομημένη συλλογή που επιτρέπει αντίγραφα, είναι αποδοτική μνήμη και παρέχει γρήγορη ενημέρωση εισαγωγής

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

Το SATED SET επιτρέπει αντίγραφα?

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

Λειτουργίες:

1. order_of_key (): Αποδέχεται ένα στοιχείο ως παράμετρο και επιστρέφει τον αριθμό των στοιχείων αυστηρά λιγότερο από το κλειδί. Κατά την εφαρμογή του, πρέπει να περάσουμε ένα ζευγάρι ως την παράμετρο της οποίας η πρώτη τιμή πρέπει να είναι ο αριθμός που θέλουμε το αποτέλεσμα και η δεύτερη τιμή θα περιέχουν αρνητική τιμή e.σολ., -1 Επειδή τα εισαγόμενα ζεύγη στο redsured_set θα έχουν την τιμή μεγαλύτερη από την ίση με 0, καθώς υποδηλώνει τους δείκτες του πίνακα.

2. find_by_order (): Αποδέχεται ένα δείκτη ως παράμετρο και επιστρέφει ένα iterator στο στοιχείο i th (ζευγάρι) σε ταξινομημένη σειρά.

Παράδειγμα:

Ας υποθέσουμε ότι υπάρχει ένα διαταγμένο ζευγάρι myset =

Εδώ,

  • Το διατεταγμένο ζευγάρι έχει διπλότυπα στοιχεία.
  • Μετά την τοποθέτηση όλων των στοιχείων στο ordered_set_pair,
  • μυς.order_of_key (): Θα δώσει τον αριθμό των στοιχείων λιγότερο από 5 i.Ε, 6.
  • μυς.find_by_order (8): Θα δώσει ένα iterator στο 8ο στοιχείο στο διατεταγμένο σετ i.Ε, 7.

Παρακάτω είναι το πρόγραμμα C ++ για την εφαρμογή της παραπάνω προσέγγισης:

Java: Η ταξινομημένη συλλογή που επιτρέπει αντίγραφα, είναι αποδοτική μνήμη και παρέχει γρήγορο ένθετο + ενημέρωση

Όποιος έχει καλύτερες προτάσεις? Ή θα πρέπει να ρόλος της δικής μου ταξινομημένης δεδομένων (ποια?·? Επίσης, άλλες πηγές (σε Java, Open Source, με δοκιμές μονάδας και μικρές DEPS) θα ήταν ωραία.

Εκσυγχρονίζω

Περισσότερες λεπτομέρειες σχετικά με την περίπτωση χρήσης μου αυτή τη στιγμή (αν και έχω παρόμοια ζήτηση την τελευταία φορά). Έχω μια συλλογή (με εκατομμύρια) αναφορών όπου θέλω να είμαι σε θέση

  • στη δημοσκόπηση ή να αποκτήσετε το μικρότερο στοιχείο σχετικά με το πεδίο S
  • και ενημερώστε το πεδίο με τη βοήθεια του πεδίου α
  • Οι ίδιες τιμές του πεδίου S μπορούν να συμβούν. Το πεδίο Α είναι στην πραγματικότητα ένας ακέραιος που δείχνει σε μια άλλη συστοιχία
  • Η μόνη εξάρτηση που θέλω είναι το trove4j. Θα μπορούσα να χρησιμοποιήσω διαφορετικό όπως οι συλλογές Mahout αν αυτό θα απαιτηθεί. Αλλά όχι ο Γκουάβα, παρόλο που ένα ωραίο lib οι συλλογές δεν είναι συντονισμένες για να είναι αποδοτικές από τη μνήμη (πυγμαχία/unboxing).

Έτσι, όλες οι κραυγές για ένα σωρό Fibonacci, αλλά φοβάμαι ότι έχει πάρα πολλά γενικά έξοδα ανά στοιχείο -> αυτός ήταν ο λόγος που σκέφτηκα για μια πιο αποδοτική μνήμη “ταξινομημένη+διαμερισμένη συστοιχία” λύση “.

1 1 1 ασημένιο σήμα

ρώτησε 10 Οκτωβρίου 2012 στις 20:15

17K 16 16 χρυσά κονκάρδες 97 97 ασημένια κονκάρδες 196 196 χάλκινα κονκάρδες

Ποιο ήταν το πρόβλημα με τη χρήση guava treemultiset ?

10 Οκτωβρίου 2012 στις 20:22

@Vainolo Εξωτερική εξάρτηση σύμφωνα με την παρατήρηση OP.

10 Οκτωβρίου 2012 στις 20:24

Θα μπορούσε να είναι χρήσιμη – cheatsheet πολυπλοκότητας: bigocheatsheet.com

11 Ιουλίου 2017 στις 14:29

6 απαντήσεις 6

Όταν χρειάζεστε μια ταξινομημένη συλλογή, θα πρέπει να αναλύσετε προσεκτικά τις ανάγκες σας.
Εάν η πλειονότητα των εργασιών είναι εισαγωγή Και μόνο μερικοί πρέπει να αναζητήσουν και στη συνέχεια χρησιμοποιώντας μια ταξινομημένη συλλογή i.μι. Κρατήστε τα στοιχεία ταξινομημένα στη συλλογή συνεχώς, δεν θα ήταν μια καλή επιλογή (λόγω του γενικού εξοπλισμού της διατήρησης των στοιχείων ταξινομημένα με ένθετο που θα ήταν η πιο κοινή λειτουργία).
Σε αυτή την περίπτωση θα ήταν καλύτερο να κρατήσετε ένα μη διαφοροποιημένος συλλογή και κάντε τη διαλογή μόνο όταν χρειάζεται. Εγώ.μι. Πριν από την αναζήτηση. Θα μπορούσατε ακόμη και να χρησιμοποιήσετε μια απλή λίστα και να την ταξινομήσετε (χρησιμοποιώντας τις συλλογές.Ταξινόμηση εγώ.μι. Mergesort) όταν χρειάζεται. Αλλά το προτείνω με προσοχή, καθώς για αυτό είναι αποτελεσματικό, η υπόθεση είναι ότι εργάζεστε σε μεγάλα δεδομένα. Σε πραγματικά μικρά δεδομένα, ακόμη και η γραμμική αναζήτηση είναι αρκετά καλή.

Εάν η πλειονότητα των εργασιών είναι ερευνητικός τότε θα μπορούσατε να χρησιμοποιήσετε μια ταξινομημένη συλλογή που από την άποψή μου υπάρχουν δομές δεδομένων για να διαλέξετε (μερικά που ήδη αναφέρετε) και θα μπορούσατε να αναφέρετε για να δείτε ποια ταιριάζει τα δικα σου ανάγκες.

Απαντήθηκε στις 10 Οκτωβρίου 2012 στις 20:25

52.7K 66 66 χρυσά κονκάρδες 207 207 ασημένια σήματα 338 338 χάλκινα κονκάρδες

Αυτό δεν απαντά στην ερώτηση, πραγματικά το επαναλαμβάνει απλώς

28 Ιουνίου 2021 στις 20:51

Τι γίνεται με το guava treemultiset? Τι ζητήσατε: Μια ταξινομημένη συλλογή που δέχεται αντίγραφα. Δεν ξέρω τίποτα για την απόδοσή του όμως.

3,280 5 5 χρυσά κονκάρδες 35 35 ασημένια κονκάρδες 49 49 χάλκινα κονκάρδες

Απαντήθηκε στις 10 Οκτωβρίου 2012 στις 20:21

6,872 4 4 χρυσά κονκάρδες 23 23 ασημένια κονκάρδες 46 46 χάλκινα κονκάρδες

Το έχω ήδη προσθέσει, αλλά νομίζω ότι (δεν έβλεπε ακόμα τον κώδικα) ότι η εφαρμογή είναι σχεδόν ταυτόσημη με τη χάρτη>, αλλά το κύριο πρόβλημα είναι η εξάρτηση

10 Οκτωβρίου 2012 στις 21:22

Φαίνεται από τον κώδικα να είναι μια εντελώς νέα εφαρμογή. Πολλά και πολλά κώδικα. Και μπορείτε να κατεβάσετε την πηγή και να την προσθέσετε στο έργο σας, οπότε ποιο είναι το πρόβλημα? άδεια χορήγησης άδειας?

10 Οκτωβρίου 2012 στις 21:28

μέγεθος βάζου. Η εφαρμογή μου πρέπει να είναι μικρή και φορητή.

11 Οκτωβρίου 2012 στις 7:10

Τι γίνεται με τη χρήση εργαλείων όπως το proguard για να συμπιέσετε το βάζο αφού ολοκληρώσετε τον προγραμματισμό? Η σύνταξη της δικής σας βιβλιοθήκης μόνο λόγω του μεγέθους του βάζου δεν είναι μια καλή επένδυση του χρόνου σας.

11 Οκτωβρίου 2012 στις 7:38

Λοιπόν, θα ήθελα να διατηρήσω το (ανοιχτό κώδικα) έργο μου καθαρό και με λίγες μόνο εξαρτήσεις. Και μόνο λόγω μιας δομής δεδομένων σίγουρα δεν θα εξαρτηθεί από μια ολόκληρη βιβλιοθήκη. Έχω ήδη trove4j και δεν θέλω μια άλλη συλλογή lib

11 Οκτωβρίου 2012 στις 9:53

Αποφάσισα να κυλήσω τη δική μου αλλά όχι τη βέλτιστη λύση μόνο μια παραλλαγή Treemap. Θα το κρατήσω ενημερωμένο αν θα συντονίσω αυτήν τη συλλογή σχετικά με τη μνήμη. Η ταχύτητα είναι ήδη πολύ καλύτερη από την προηγούμενη απόπειρα προτεραιότητας, καθώς χρειαζόμουν τη συλλογή.Αφαιρέστε τη μέθοδο (αντικείμενο) (για την ενημέρωση μιας καταχώρησης):

πακέτο com.graphhopper.Coll; Εισαγωγή GNU.βρώμικος.ερυθρός.Tintiterator; Εισαγωγή GNU.βρώμικος.σειρά.χασίσι.Tinthashset; Εισαγωγή Java.χρησιμοποιώ.Χάρτης.Είσοδος; Εισαγωγή Java.χρησιμοποιώ.Treemap; /*** Μια ουρά προτεραιότητας που εφαρμόζεται από ένα Treemap για να επιτρέψει την ταχεία ενημέρωση κλειδιού. Ή θα πρέπει να χρησιμοποιήσουμε ένα πρότυπο * b-δέντρο? */ δημόσια τάξη mysortedCollection < private int size; private int slidingMeanValue = 20; private TreeMapmap; public MySortedCollection(int size) < map = new TreeMap(); > Void Remove (int πλήκτρο, τιμή int) < TIntHashSet set = map.get(value); if (set == null || !set.remove(key)) throw new IllegalStateException("cannot remove key " + key + " with value " + value + " - did you insert " + key + "," + value + " before?"); size--; if (set.isEmpty()) map.remove(value); >Δημόσια ενημέρωση κενών (int κλειδί, int oldValue, int value) < remove(key, oldValue); insert(key, value); >δημόσιο κενό ένθετο (int κλειδί, int value) < TIntHashSet set = map.get(value); if (set == null) map.put(value, set = new TIntHashSet(slidingMeanValue)); // else // slidingMeanValue = Math.max(5, (slidingMeanValue + set.size()) / 2); if (!set.add(key)) throw new IllegalStateException("use update if you want to update " + key); size++; >δημόσιο int peekValue () < if (size == 0) throw new IllegalStateException("collection is already empty!?"); Entrye = map.firstEntry(); if (e.getValue().isEmpty()) throw new IllegalStateException("internal set is already empty!?"); return map.firstEntry().getKey(); > δημόσιο int peekkey () < if (size == 0) throw new IllegalStateException("collection is already empty!?"); TIntHashSet set = map.firstEntry().getValue(); if (set.isEmpty()) throw new IllegalStateException("internal set is already empty!?"); return set.iterator().next(); >δημόσιο int pollkey () < size--; if (size < 0) throw new IllegalStateException("collection is already empty!?"); Entrye = map.firstEntry(); TIntHashSet set = e.getValue(); TIntIterator iter = set.iterator(); if (set.isEmpty()) throw new IllegalStateException("internal set is already empty!?"); int val = iter.next(); iter.remove(); if (set.isEmpty()) map.remove(e.getKey()); return val; > δημόσιο μέγεθος int () < return size; >δημόσια boolean isEmpty () < return size == 0; >δημόσιο int getslidingMeAnvalue () < return slidingMeanValue; >@Override Public String ToString () < return "size " + size + " min=(" + peekKey() + "=>" + peekvalue () +") "; >> 

Ταξινομημένη συλλογή που επιτρέπει αντίγραφα?

Αποστολή πίτες

Δημοσιεύτηκε πριν από 13 χρόνια

Αριθμός φέτες για αποστολή:

Προαιρετική σημείωση:

  • Αναφορά δημοσίευσης στον συντονιστή
  • Μετά από μια σύντομη συνεδρίαση αντιμετώπισης προβλημάτων όπου δεν μπορούσα να καταλάβω γιατί τα μάτια μου ταξινόμησαν το PriorityQueue, τα στοιχεία είναι στοιχεία με μη ταξινομημένο τρόπο διάβασα το javadoc και συνειδητοποίησα ότι ο iterator της προτεραιότητας είναι ελεύθερος να επιστρέψει στοιχεία με οποιαδήποτε σειρά που του αρέσει βασικά. Με άλλα λόγια, μια προτεραιότητα δεν μπορεί να θεωρηθεί ως ταξινομημένη συλλογή. Ο λόγος για τον οποίο ένα treeset δεν είναι μια επιλογή είναι ότι χρειάζομαι τη συλλογή για να επιτρέψω αντίγραφα. Και θέλω να ταξινομείται πάντα, χωρίς να χρησιμοποιώ συλλογές.είδος().

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

    Έτσι, για να συνοψίσουμε, αυτό που χρειάζομαι είναι μια συλλογή που:

    Υπάρχει μια τέτοια συλλογή στο API Java? Ή είναι οι απαιτήσεις μου πολύ μακρινές? Οποιεσδήποτε προτάσεις για τον καλύτερο και καθαρότερο τρόπο επίλυσης αυτού? Και η απόδοση δεν είναι ανησυχητική για μένα, αφού συνολικά η συλλογή δεν θα περιέχει ποτέ περισσότερο από τότε να πω μερικές εκατοντάδες στοιχεία.

    Διευθετώ

    Δημοσιεύσεις: 77786

    Αποστολή πίτες

    Δημοσιεύτηκε πριν από 13 χρόνια

    Αριθμός φέτες για αποστολή:

    Προαιρετική σημείωση:

  • Αναφορά δημοσίευσης στον συντονιστή
  • Νομίζω ότι θα πρέπει να γράψετε το δικό σας. Αυτό που περιγράφετε είναι μια λίστα που παίρνει τη φυσική παραγγελία και όχι την εντολή εισαγωγής ως παραγγελία. Γράψτε ένα περιτύλιγμα γύρω από μια εφαρμογή λίστας. Χρησιμοποιήστε μια δυαδική αναζήτηση για να βρείτε το σημείο εισαγωγής στη μέθοδο Add (e) και να ρίξετε το anunsupportedOperationException από τη μέθοδο ADD (int, e). Σημειώστε ότι η κλάση του περιτυλίγματος θα πρέπει να εφαρμόσει τη λίστα Διεπαφή επίσης. Η μέθοδος Add (E) θα εκτελεστεί στο αρχείοn Ώρα στο καλύτερο.

    Σερίφης

    Δημοσιεύσεις: 22739

    Χρώμιο

    Αποστολή πίτες

    Δημοσιεύτηκε πριν από 13 χρόνια

    Αριθμός φέτες για αποστολή:

    Προαιρετική σημείωση:

  • Αναφορά δημοσίευσης στον συντονιστή
  • Ο Campbell Ritchie έγραψε: Και ρίξτε την AnunsupportEperationException από τη μέθοδο Add (int, e). Σημειώστε ότι η κλάση Wrapper θα πρέπει επίσης να εφαρμόσει τη διεπαφή λίστας.

    Η κλάση περιτυλίγματος δεν χρειάζεται να εφαρμόσει τη λίστα. Αντ ‘αυτού, υλοποίηση συλλογής. Η λίστα προσθέτει τρία πράγματα που η συλλογή δεν έχει:
    1) μια συγκεκριμένη παραγγελία
    2) Ευρετηρίαση των στοιχείων
    3) Μετακίνηση τόσο προς τα εμπρός όσο και προς τα πίσω με τον επισκέπτη

    Δεδομένου ότι πιθανότατα δεν θα χρειαστείτε 2 ή 3, το περιτύλιγμα πρέπει μόνο να εφαρμόσει τη συλλογή. Εάν εφαρμόσετε τη λίστα, το κάνετε πιο δύσκολο για τον εαυτό σας, επειδή το Add (int, e) δεν είναι το μόνο μέρος όπου μπορείτε να σπάσετε την ταξινόμησή σας:
    – Το Addall (INT, Collection) επιτρέπει επίσης την προσθήκη σε οποιαδήποτε τοποθεσία (μια άλλη μη υποστηρικτική εκμετάλλευση)
    – Το Set (int) σάς επιτρέπει να αντικαταστήσετε ένα στοιχείο με οποιοδήποτε άλλο στοιχείο (ένα άλλο μη υποστηρικτό Extexception)
    – Πρέπει να προστατεύσετε τον κατάλογο που επιστρέφεται από το Sublist επίσης (μπορείτε να τυλίξετε αυτό σε μια νέα παρουσία περιτύλιξης)
    – Πρέπει να προστατεύσετε τον επισκέπτη σας, επιτρέπει την προσθήκη και την αντικατάσταση των στοιχείων επίσης (θα χρειαστείτε μια άλλη κλάση περιτυλίγματος)

    Και τι σας δίνει η λίστα που μπορεί να θέλετε? Get (int), indexof (αντικείμενο), lastIndexof (αντικείμενο), sublist (int, int). Αλλά χρειάζεστε πραγματικά αυτά? Η συλλογή δεν τους έχει, το Set δεν τους έχει, (προτεραιότητα) ουρά δεν τους έχει.

    SCJP 1.4 – SCJP 6 – SCWCD 5 – oceejbd 6 – ocejpad 6
    Πώς να κάνετε ερωτήσεις πώς να απαντήσετε σε ερωτήσεις

    Jimi svedenholm

    Χεριές

    Αποστολή πίτες

    Δημοσιεύτηκε πριν από 13 χρόνια

    Αριθμός φέτες για αποστολή:

    Προαιρετική σημείωση:

  • Αναφορά δημοσίευσης στον συντονιστή
  • Εντάξει, έχω σκεφτεί λίγο περισσότερο και έχω μερικές επιλογές για να επιλέξω μεταξύ:

    Η επιλογή 3 ήταν η πρώτη μου σκέψη, αφού στο μυαλό μου ότι πρέπει να είναι αρκετά εύκολο. Αλλά αποδείχθηκε ότι δεν ήταν τόσο εύκολο. Αυτό που προσπαθώ να ταξινομήσω είναι αντικείμενα που εφαρμόζουν το org interface.ελατήριο.πυρήνας.Διέταξε. Υπάρχει ήδη ένας συγκριτής για τα αντικειμενικά αντικείμενα, ωστόσο, αν ο αριθμός παραγγελίας και των δύο αντικειμένων είναι ο ίδιος τότε ο συγκριτής επιστρέφει απλώς 0. Αλλά θέλω μόνο να επιστρέψει 0 εάν τα αντικείμενα είναι πραγματικά ίσα μεταξύ τους. Επειδή θα υπάρχουν παραγγελίες αντικείμενα που απέχουν πολύ από τα ίσα, αλλά με τον ίδιο αριθμό παραγγελίας. Εάν ο συγκριτής επιστρέψει 0 τότε το δέντρα θεωρεί αυτά τα αντικείμενα να είναι ίσα.

    Το πρόβλημα που έχω είναι να αποφασίσω εάν το στοιχείο E1 πρέπει να θεωρείται λιγότερο ή μεγαλύτερο από το στοιχείο e2 όταν e1.getOrder () == e2.getOrder (). Αυτό που έχω κάνει τώρα, σε μια δοκιμαστική εφαρμογή, είναι:

    Δεν έχω κανένα πρόβλημα με τα κάπως περίπλοκα βήματα, καθώς σπάνια θα πάει μέχρι το E ή για το Asuming Good Hashcode Εφαρμογές. Το πρόβλημα που έχω είναι με το τελευταίο βήμα, F. Επειδή σπάει τη σύμβαση συγκρίσιμης. Εάν η σύγκριση (E1, E2) έρχεται κάτω στο F, τότε το αποτέλεσμα είναι -1, αλλά το αποτέλεσμα της σύγκρισης (E2, E1) είναι επίσης * -1! Ακόμα κι αν αυτό δεν θα συμβεί ποτέ, μπορεί * να συμβεί *.

    Τι σκέφτεστε εσείς για αυτόν τον συγκριτή? Ένιωσα “απλά λάθος” όταν το έγραψα, αλλά επίσης δεν μου αρέσει ο τρόπος που το org.ελατήριο.πυρήνας.Το OrderComparator είναι γραμμένο αφού μπορεί να εξετάσει μη ισότιμα ​​αντικείμενα (όπως από το O1.ισούται με (o2)) να είναι ίση (επιστρέφοντας 0). Ή, όταν το σκέφτομαι, το * real * Pet Peve είναι η καθορισμένη διεπαφή, που δηλώνει σαφώς ότι θεωρεί αντικείμενα ως ίσα εάν η σύγκριση/σύγκριση έχει ως αποτέλεσμα 0. Αυτό που πρέπει να κάνει, αν με ρωτήσετε, είναι να κάνετε μια επακόλουθη κλήση O1.ισούται με (o2) και θεωρήστε τα μόνο ως αντίγραφα αν επιστρέψει αλήθεια.

    Αλλά δεδομένου ότι οι εφαρμογές set δεν θα αλλάξουν σύντομα (ή καθόλου) από αυτή την άποψη, αρχίζω να κλίνω την επιλογή 2 παραπάνω, αφού είναι απλούστερη από την επιλογή 1 και καθαρότερη τότε επιλογή 3.

    Κάμπελ Ρίτσε

    Διευθετώ

    Δημοσιεύσεις: 77786

    Αποστολή πίτες

    Δημοσιεύτηκε πριν από 13 χρόνια

    Αριθμός φέτες για αποστολή:

    Προαιρετική σημείωση:

  • Αναφορά δημοσίευσης στον συντονιστή
  • Ένας συγκριτής που είναι σύμφωνος με τους equals ακούγεται μια καλή ιδέα, αλλά αν το χρησιμοποιείτε με ένα treeset δεν θα πάρετε κανένα διπλότυπο.

    Jimi svedenholm

    Χεριές

    Αποστολή πίτες

    Δημοσιεύτηκε πριν από 13 χρόνια

    Αριθμός φέτες για αποστολή:

    Προαιρετική σημείωση:

  • Αναφορά δημοσίευσης στον συντονιστή
  • Ο Campbell Ritchie έγραψε: Ένας συγκριτής που είναι σύμφωνος με τους ίσους, ακούγεται μια καλή ιδέα, αλλά αν το χρησιμοποιείτε με ένα treeset, δεν θα πάρετε αντίγραφα.

    Λοιπόν, υπάρχουν δύο διαφορετικά είδη ισότητας/διπλωματικότητας εδώ*. Ένας συγκριτής θεωρεί ότι δύο στοιχεία είναι ίσα εάν η “σύγκριση υπολογισμού” έχει ως αποτέλεσμα 0. Και αυτό είναι προφανώς το μόνο ισούται με τον έλεγχο που κάνει ένα ταξινομημένο. Αλλά ο τρόπος που το βλέπω, αυτός ο στενός ορισμός των ισότιμων είναι ανεπαρκής. Τα αντικείμενα είναι μόνο “ίσα” στα μάτια του συγκριτή, αλλά το ταξινομημένο πρέπει να χρησιμοποιεί μόνο τον συγκριτή για ταξινόμηση, όχι διπλός έλεγχος. Εάν δύο στοιχεία έχουν μια “σύγκριση-αντοχή” 0, αλλά όπου ισούται () επιστρέφει ψευδείς τότε θα πρέπει απλώς να θεωρηθεί ότι ως “δεν αντιγράφει, αλλά η σειρά είναι άσχετη”.

    Αλλά ίσως κάποιος μπορεί να εξηγήσει τον λόγο πίσω από αυτό το λανθασμένο χαρακτηριστικό της διαλογής των ματιών? Γιατί εμπιστεύεται τη σύγκριση/σύγκριση σε σχέση με τον έλεγχο της διπλωματίας χωρίς να κάνει κατάλληλος equals () Έλεγχος? Έχω διαβάσει το javadoc, αλλά το μόνο που λέει είναι ότι αυτός είναι ο τρόπος που εφαρμόζεται. Εκτέλεση?

    Έτσι, για να επιστρέψω στην αρχική μου ανάρτηση. Όταν μίλησα για διπλότυπα εννοούσα αντίγραφα σύμφωνα με την άποψη των συγκριτών και ο λόγος που χρησιμοποίησα αυτόν τον ορισμό ήταν ότι αυτός είναι ο ορισμός που χρησιμοποιεί το ταξινομημένο. Δεν έχω κανένα λόγο να βάλω αληθής Διπλασιάματα (δηλαδή όπου O1.ισούται με (o2)) στη συλλογή.

    Η λύση που κλίνω τώρα είναι να δημιουργήσω τη δική μου συλλογή (δηλαδή “συλλογή εργαλείων”) που έχει μια εσωτερική λίστα ArrayList. Αυτή η συλλογή απλώς μεταβιβάζει όλες τις μεθόδους που καλεί στο ArrayList, αλλά πριν από τις μεθόδους ToArray- και Iterator ονομάζονται ταξινομήστε το ArrayList χρησιμοποιώντας τον παρεχόμενο συγκριτή. Ένα αποτέλεσμα μπόνους αυτού σε σύγκριση με την “επιλογή 3” παραπάνω είναι ότι αυτή η λύση δεν έχει κανένα πρόβλημα με μεταβλητά στοιχεία όπου το πεδίο που χρησιμοποιείται για τη σύγκριση μπορεί να αλλάξει μετά την προσθήκη της στη συλλογή. Ένα ταξινομημένο θα μπορούσε πιθανότατα να μην είναι σε θέση να αντιμετωπίσει αυτό το σενάριο κομψά.

    Οποιαδήποτε σχόλια σχετικά με αυτήν τη λύση?

    * Τρεις αν σκεφτείτε ‘==’, αλλά αυτό είναι απλώς μια ειδική περίπτωση ίσων ().

    Πώς να επιτρέψετε αντίγραφα

    В э д д д д д д œ е е е е е е е и и и и и и и и и и и и и и и и и и.

    Τα ταξινομημένα σετ στο Redis δεν επέτρεψαν αντίγραφα. Μπορούμε να επιτρέψουμε αντίγραφα σε ταξινομημένα σύνολα ?

    —
    Χαιρετισμοί,
    Manula Thantriwatte .
    Προπτυχιακός | Πανεπιστήμιο του Colombo School of Computing
    Σρι Λάνκα

    Demis Bellot

    не прочλι,

    23 PREREVR. 2011., 09:28:47 23.02.2011

    Написаζί

    Ч ч ч о о о о о ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч

    Ч ч п п п п п п п ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч

    У в н н н н н у у у у у у у у у у у у у у у у у у у у у у у у у у œ.

    Пожаловатρακ

    Ч ч п п п п п п п п п ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч

    Поrзad и и и и и ° и

    В э д д д д д д œ е е е е е е е и и и и и и и и и и и и и и и и и и.

    – redi. @googlegroups.com, manula thantriwatte

    Είστε βέβαιοι ότι δεν θέλετε να χρησιμοποιείτε μια λίστα? Ως ορισμό, δεν περιέχει διπλότυπα.

    —
    Λάβατε αυτό το μήνυμα επειδή έχετε εγγραφεί στην ομάδα Google Groups “Redis DB”.
    Για να δημοσιεύσετε σε αυτήν την ομάδα, στείλτε email στο Redi. @googlegroups.com.
    Για να καταργήσετε την εγγραφή από αυτήν την ομάδα, στείλτε email στο redis-db+u. @googlegroups.com.
    Για περισσότερες επιλογές, επισκεφθείτε αυτήν την ομάδα στο http: // Ομάδες.Google.com/group/redis-db?hl = en.

    Didier Spezia

    не прочλι,

    23 PREREVR. 2011., 10:18:24 23.02.2011

    Написаζί

    Ч ч ч о о о о о ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч

    Ч ч п п п п п п п ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч

    У в н н н н н у у у у у у у у у у у у у у у у у у у у у у у у у у œ.

    Пожаловатρακ

    Ч ч п п п п п п п п п ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч

    Поrзad и и и и и ° и

    В э д д д д д д œ е е е е е е е и и и и и и и и и и и и и и и и и и.

    Εάν προσπαθείτε να δημιουργήσετε μια παραγγελία, μη μοναδική ευρετηρίαση
    δομή δεδομένων και είναι πραγματικά κολλημένοι με το redis, μπορείτε
    Θέλετε να ρίξετε μια ματιά στη βάση δεδομένων Alchemy του Jak Sprats.

    Παραμένει ως επί το πλείστον συμβατό με το redis, αλλά μπορεί να ταιριάζει
    χρειάζεται καλύτερα λόγω της υποστήριξής του για δείκτες BTREE σε μνήμη.

    Εάν χρειαστεί να συζητήσετε για αυτό, χρησιμοποιήστε το
    αφιερωμένη ομάδα.

    Στις 23 Fév, 09:25, Manula Thantriwatte
    έγραψε:

    Will Maier

    не прочλι,

    23 PREREVR. 2011., 12:27:05 23.02.2011

    Написаζί

    Ч ч ч о о о о о ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч

    Ч ч п п п п п п п ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч

    У в н н н н н у у у у у у у у у у у у у у у у у у у у у у у у у у œ.

    Пожаловатρακ

    Ч ч п п п п п п п п п ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч

    Поrзad и и и и и ° и

    В э д д д д д д œ е е е е е е е и и и и и и и и и и и и и и и и и и.

    – redi. @googlegroups.com

    Στις Wed, 23 Φεβρουαρίου 2011 στις 01:55:16 μμ +0530, ο Manula Thantriwatte έγραψε:
    > Τα ταξινομημένα σετ στο Redis δεν επέτρεψαν αντίγραφα. Μπορούμε να επιτρέψουμε αντίγραφα
    > ταξινομημένα σύνολα ?

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

    Ώρα zadd.Σειρά 1298460338 “1298460348 9”
    Ώρα zadd.Σειρά 1298460348 “1298460348 10”
    Ώρα zadd.Σειρά 1298460358 “1298460358 11”

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

    Λειτουργεί ο Σοφός στο Linux? Το Sound Bar έχει μπάσο

    Related Posts

    how_to_stay_safe_on_onlyfans_5

    Νίσα

    OnlyFans Free Pages vs Paid: How Access Differs

    onlyfans_help_center

    Νίσα

    Budgeting Tips and PPV Across Free OnlyFans Pages

    6a0b117e02549eec1a0db52c_infographic_user_growth_bar_chart-1

    Νίσα

    Safe Browsing Protocols for Zero-Dollar OnlyFans Pages

    banner
    banner

    PROMO

    racavedigger.com
    © racavedigger.com 2026