poscore Δημοσ. 1 Ιουνίου 2014 Δημοσ. 1 Ιουνίου 2014 Χαίρεται, πρέπει να χρηισμοποιήσω hashmap για αποθήκευση λέξεων ώστε να μετράω μετά πόσες φορές εμφανίστηκε μια λέξη σε ένα κείμενο. Η ερώτηση μου είναι ως key να βάλω την κάθε λέξη η κάποιο id? Η ίσως το count Που είναι πόσες φορές μετριέται η λέξη; ευχαριστώ
lion2486 Δημοσ. 1 Ιουνίου 2014 Δημοσ. 1 Ιουνίου 2014 Αν για εσένα η λέξη είναι το κλειδί ή μήπως θέλεις να μετράς ομόριζα/κλίσεις/αριθμό ; Αν δεν σε νοιάζει η μορφή της λέξης πιο απλό φαίνεται να κάνεις Map<String, Integer> για τον μετρητή στην κάθε λέξη.. 1
poscore Δημοσ. 1 Ιουνίου 2014 Μέλος Δημοσ. 1 Ιουνίου 2014 Απλό κείμενο είναι με λέξεις τίποτα ιδιαίτερο...ούτε κλίσεις ούτε τίποτα...επίσης να ρωτήσω, όταν διαπαιρνώ το hashmap με foreach() δεν μπορώ ν διαγράφω ε; Υπάρχει κανα κολπάκι εδω; Πως μπορείς να το διαπερνάς και να διαγράφεις ταυτόχρονα; :/
ZAKKWYLDE Δημοσ. 2 Ιουνίου 2014 Δημοσ. 2 Ιουνίου 2014 Απλό κείμενο είναι με λέξεις τίποτα ιδιαίτερο...ούτε κλίσεις ούτε τίποτα...επίσης να ρωτήσω, όταν διαπαιρνώ το hashmap με foreach() δεν μπορώ ν διαγράφω ε; Υπάρχει κανα κολπάκι εδω; Πως μπορείς να το διαπερνάς και να διαγράφεις ταυτόχρονα; :/ Με Iterator, πχ: HashMap<String, String> map = new HashMap<String, String>(); Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry e = it.next(); if(getCondition()) it.remove(); }
poscore Δημοσ. 2 Ιουνίου 2014 Μέλος Δημοσ. 2 Ιουνίου 2014 Χτυπάει λάθος στο παρακάτω δεν μπορώ να καταλάβω γιατί...απο το πρωί προσπαθώ να ξεκολλήσω και δεν μου βγαίνει ρε γμτ... HashMap<Integer, String> myMap = new HashMap<Integer, String>(); Iterator it = myMap.entrySet().iterator(); while(it.hasNext()) { Map.Entry entry = it.next(); .... Document.java:34: error: cannot find symbol System.out.println(val+"<< | >>"+keyword); ^ symbol: variable val location: class Document ένας πιο ολοκληρωμένος κώδικας: Iterator<Map.Entry<Integer, String>> it = myMap.entrySet().iterator(); int wordCounter = 0; int currentKey = 0; //for(int i=0; i<myMap.size(); i++){ while(it.hasNext()) { Map.Entry entry = it.next(); if(entry.getValue().equals(keyword)) { it.remove(); break; } } και χτυπάει: Exception in thread "main" java.util.ConcurrentModificationException ...
nilosgr Δημοσ. 2 Ιουνίου 2014 Δημοσ. 2 Ιουνίου 2014 List<String> toRemove = new ArrayList(); for (String s : map.keySet()) { if (map.get(s) ...) { toRemove.add(s); } } for (String s : toRemove) { map.remove(s); }
poscore Δημοσ. 2 Ιουνίου 2014 Μέλος Δημοσ. 2 Ιουνίου 2014 nilosgr είσαι σίγουρος πως παίζει αυτό; Σε μια προηγούμενη version νομίζω το είχα υλοποιήσει έτσι και δεν μπορείς να κάνεις remove όταν Κάνεις iterate σε ένα Hashset.
ZAKKWYLDE Δημοσ. 2 Ιουνίου 2014 Δημοσ. 2 Ιουνίου 2014 Χτυπάει λάθος στο παρακάτω δεν μπορώ να καταλάβω γιατί...απο το πρωί προσπαθώ να ξεκολλήσω και δεν μου βγαίνει ρε γμτ... HashMap<Integer, String> myMap = new HashMap<Integer, String>(); Iterator it = myMap.entrySet().iterator(); while(it.hasNext()) { Map.Entry entry = it.next(); .... Document.java:34: error: cannot find symbol System.out.println(val+"<< | >>"+keyword); ^ symbol: variable val location: class Document ένας πιο ολοκληρωμένος κώδικας: Iterator<Map.Entry<Integer, String>> it = myMap.entrySet().iterator(); int wordCounter = 0; int currentKey = 0; //for(int i=0; i<myMap.size(); i++){ while(it.hasNext()) { Map.Entry entry = it.next(); if(entry.getValue().equals(keyword)) { it.remove(); break; } } και χτυπάει: Exception in thread "main" java.util.ConcurrentModificationException ... Κάνεις τίποτα με Threads? Δοκίμασε ConcurrentHashmap Επίσης ίσως στο Map.Entry entry = it.next(); να είναι καλύτερα Map.Entry<Integer, String> αν και δεν θα έπρεπε κανονικά να στο πετάει το exception...μήπως προσπαθείς πουθενά αλλού να κάνεις remove απο το Map.
poscore Δημοσ. 2 Ιουνίου 2014 Μέλος Δημοσ. 2 Ιουνίου 2014 Όχι δεν ασχολούμαι με threads...προσπαθώ βρε παιδιά να υλοποιήσω τρελά απλά πράγματα...αλλά δεν βγαίνουν !!!!! :|
albNik Δημοσ. 2 Ιουνίου 2014 Δημοσ. 2 Ιουνίου 2014 nilosgr είσαι σίγουρος πως παίζει αυτό; Σε μια προηγούμενη version νομίζω το είχα υλοποιήσει έτσι και δεν μπορείς να κάνεις remove όταν Κάνεις iterate σε ένα Hashset. Σωστα νομιζεις, αλλα εδώ κανει remove απο το map στο iterate της λιστας.
stikos Δημοσ. 2 Ιουνίου 2014 Δημοσ. 2 Ιουνίου 2014 1. Αν θές να κάνεις remove από λίστα τότε θα την προσπελάσει με for και θα κάλέσεις remove(i) 2. Όσον αφορά το hashmap to key πρεπει να είναι μοναδικό. Οπότε βάζεις για key την λέξη και να σου επιστρέφει ένα αριθμό που είναι το ποσες φορές εμαφνήστικε. π.χ. HashMap<String, Integer> myMap = new HashMap<String, Integer>(); String word ="word"; if(myMap.keySet().contains(word)){ Integer count = myMap.remove(word); myMap.put(word,count++); } else{ myMap.put(word,1); }
nilosgr Δημοσ. 2 Ιουνίου 2014 Δημοσ. 2 Ιουνίου 2014 nilosgr είσαι σίγουρος πως παίζει αυτό; Σε μια προηγούμενη version νομίζω το είχα υλοποιήσει έτσι και δεν μπορείς να κάνεις remove όταν Κάνεις iterate σε ένα Hashset. Δωσε βαση στην λιστα που εχω. Πρωτα κανω iterate το map, κρατωντας ολα τα κλειδια που θελω να σβησω και μετα κανω iterate τη λιστα και σβηνω τις εγγραφες απ το map
nplatis Δημοσ. 2 Ιουνίου 2014 Δημοσ. 2 Ιουνίου 2014 Προφανώς κάτι άλλο κάνεις ανάμεσα, φαίνεται και από τη στοίχιση του κώδικα που παραθέτεις. Σκέτος ο ακόλουθος κώδικας δουλεύει μια χαρά: HashMap<Integer, String> myMap = new HashMap<>(); myMap.put(1, "a"); myMap.put(2, "b"); myMap.put(3, "c"); Iterator<Map.Entry<Integer, String>> it = myMap.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, String> entry = it.next(); if (entry.getValue().equals("b")) { it.remove(); break; } } 1
poscore Δημοσ. 3 Ιουνίου 2014 Μέλος Δημοσ. 3 Ιουνίου 2014 Σας ευχαριστώ παιδιά. Μόνο αυτό έκανα...το θέμα είναι οτι ήταν σε μια μέθοδο και αυτό που την καλούσε έκανε και άλλο loop...anyway thx
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα