Evangeli Δημοσ. 5 Σεπτεμβρίου 2009 Δημοσ. 5 Σεπτεμβρίου 2009 Καλημέρα Ποια δομή της Java θα μπορούσε να με βοηθήσει προκειμένου να ταξινομήσω τα ακόλουθα δεδομένα? >var 52 new 28 end 79 width 62 start 37 var 69 new 61 start 28 ... σε >var 52 + 69 new 28 + 61 end 79 + 0 width 62 + 0 start 37 + 28 ... Κάτι σε ArrayList ή HashTable πάζει, η βλακίες λέω? Βαγγέλης.
ΠάρηςΓ Δημοσ. 5 Σεπτεμβρίου 2009 Δημοσ. 5 Σεπτεμβρίου 2009 Χμ..Μπορεις με hashmap αλλα οχι το απλο καποιο SortedMap .Φτιαχνεις και εναν comparator και εισαι κομπλε.. ---------- Το μήνυμα προστέθηκε στις 13:52 ---------- υ.γ Δες το TreeMap
Evangeli Δημοσ. 5 Σεπτεμβρίου 2009 Μέλος Δημοσ. 5 Σεπτεμβρίου 2009 υ.γ Δες το TreeMap Ο ακόλουθός κώδικας είναι πολύ κοντά σε αυτό που ψάχνω. Αλλά αντιμετωπίζω δυο πρόβλημα: 1) Γιατί η set.contains(); δεν μου δουλεύει σωστά? 2) Τι τροποποίηση χρειάζεται στο κομμάτι double balance = ((Double)tm.get("John Doe")).doubleValue(); αν θέλω η ταξινόμηση να γίνεται με βάση την τιμή? Παρατηρείστε ότι σε αυτή την περίπτωση η εισαγωγή των δεδομένων θα γίνεται: tm.put(new Double(99.22), "Todd Hall"); αντί για tm.put("Todd Hall", new Double(99.22)); Βαγγέλης > package treemapdemo; import java.util.*; class TreeMapDemo { public static void main(String args[]) { // Create a tree map TreeMap tm = new TreeMap(); // Put elements to the map tm.put("John Doe", new Double(3434.34)); tm.put("Tom Smith", new Double(123.22)); tm.put("Jane Baker", new Double(1378.00)); tm.put("Todd Hall", new Double(99.22)); tm.put("Ralph Smith", new Double(-19.08)); // Get a set of the entries Set set = tm.entrySet(); // Get an iterator Iterator i = set.iterator(); // Display elements while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ": "); System.out.println(me.getValue()); } System.out.println(); // Deposit 1000 into John Doe's account double balance = ((Double)tm.get("John Doe")).doubleValue(); tm.put("John Doe", new Double(balance + 1000)); System.out.println("John Doe's new balance: " + tm.get("John Doe") + "\n"); if (set.contains("John Doe")) System.out.println("Found!\n"); else System.out.println("Not Found!\n"); // Get an iterator i = set.iterator(); // Display elements while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ": "); System.out.println(me.getValue()); } } }
ΠάρηςΓ Δημοσ. 5 Σεπτεμβρίου 2009 Δημοσ. 5 Σεπτεμβρίου 2009 Για να σε βοηθησω θες η ταξινόμιση να γίνεται βαση της τιμης Double που δινεις; ---------- Το μήνυμα προστέθηκε στις 16:06 ---------- http://www.manticmoo.com/articles/jeff/programming/java/sorting-maps-by-value.php Δες και αυτο...
Evangeli Δημοσ. 5 Σεπτεμβρίου 2009 Μέλος Δημοσ. 5 Σεπτεμβρίου 2009 Για να σε βοηθησω θες η ταξινόμιση να γίνεται βαση της τιμης Double που δινεις; ---------- Το μήνυμα προστέθηκε στις 16:06 ---------- http://www.manticmoo.com/articles/jeff/programming/java/sorting-maps-by-value.php Δες και αυτο... Ναι ακριβώς. Κοίτα, βασικά επειδή είναι πολύ πληροφορία μαζεμένη, μπορείς να μου απαντήσεις στα δυο αυτά ερωτήματα?
ΠάρηςΓ Δημοσ. 5 Σεπτεμβρίου 2009 Δημοσ. 5 Σεπτεμβρίου 2009 Δεν γινεται με τον τροπο που εγραψες... αρα δεν υπαρχει καποια απαντηση!
Evangeli Δημοσ. 5 Σεπτεμβρίου 2009 Μέλος Δημοσ. 5 Σεπτεμβρίου 2009 Δεν γινεται με τον τροπο που εγραψες... αρα δεν υπαρχει καποια απαντηση! Τι ακριβώς δεν γίνεται? Η ταξινόμηση με βάση την τιμή πραγματοποιείται κανονικότατα αν εισάγουμε τα δεδομένα μας με τον εξής τρόπο: tm.put(new Double(99.22), "Todd Hall"); Το θέμα είναι 1) γιατί δεν μου δουλεύει αυτό? if (set.contains("John Doe")) System.out.println("Found!\n"); 2) πως ανακτώ την τιμή 99.22 δίνοντας σας input το "Todd Hall" ---------- Το μήνυμα προστέθηκε στις 16:46 ---------- Σόρρυ που επιμένω αλλα εσύ ο ίδιος μου είπεσ στην αρχή οτι η λύση είναι με TreeMap! >υ.γ Δες το TreeMap
Evangeli Δημοσ. 6 Σεπτεμβρίου 2009 Μέλος Δημοσ. 6 Σεπτεμβρίου 2009 Λοιπόν, τελικά το πρόβλημα λύθηκε. Ουσιαστικά, έπειτα από κάποιες πατέντες, ο κώδικας που ζητούσα ήταν ο ακόλουθος: >/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package treemapdemo; /** * * @author Euangelos */ // Use Generic TreeMap to store Integer as key and String as value import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class test { public static void main(String[] args) { int newKey = 17; String newValue = "One"; Map<Integer, String> map = new TreeMap<Integer, String>(); // Add Items to the TreeMap map.put(new Integer(1), "One"); map.put(new Integer(2), "Two"); map.put(new Integer(3), "Three"); map.put(new Integer(4), "Four"); map.put(new Integer(5), "Five"); map.put(new Integer(6), "Six"); map.put(new Integer(7), "Seven"); map.put(new Integer(8), "Eight"); map.put(new Integer(9), "Nine"); map.put(new Integer(10), "Ten"); // Use iterator to display the keys and associated values System.out.println("Map Values Before: "); Set keys = map.keySet(); for (Iterator i = keys.iterator(); i.hasNext() { Integer key = (Integer) i.next(); String value = (String) map.get(key); System.out.println(key + " = " + value); } keys = map.keySet(); for (Iterator i = keys.iterator(); i.hasNext() { Integer key = (Integer) i.next(); String value = (String) map.get(key); if ( value.equals(newValue) ) { // Remove the entry with key "key" System.out.println("\nRemove element with key: " + key + " and value " + value + "!"); map.remove(new Integer(key)); // Use intValue method of Integer class to convert it into int type. newKey += key.intValue(); newValue = value; // Add Items to the TreeMap System.out.println("Add element with key: " + newKey + " and value " + newValue + "!"); map.put(new Integer(newKey), newValue); break; } } // Use iterator to display the keys and associated values System.out.println("\nMap Values After: "); keys = map.keySet(); for (Iterator i = keys.iterator(); i.hasNext() { Integer key = (Integer) i.next(); String value = (String) map.get(key); System.out.println(key + " = " + value); } } }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.