User Tools

Site Tools


java:jfc_intf_map

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:jfc_intf_map [2020/03/12 21:20] gthanosjava:jfc_intf_map [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 30: Line 30:
 ===== Το interface java.util.SortedMap ===== ===== Το interface java.util.SortedMap =====
  
-Εκτός του //interface// [[http://docs.oracle.com/javase/7/docs/api/java/util/Map.html|java.util.Map]] διατίθεται  και το //interface// [[http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html|java.util.SortedMap]] το οποίο διαθέτει τις εγγραφές ταξινομημένες με βάση τα κλειδιά . Ένα [[http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html|java.util.SortedMap]] υλοποιείται συνήθως μέσω ενός ισοζυγισμένου δυαδικού δέντρου.+Τo interface [[http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html|java.util.SortedMap]] είναι ένα //Map// διαθέτει τις εγγραφές ταξινομημένες με βάση τα κλειδιά . Ένα [[http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html|java.util.SortedMap]] υλοποιείται συνήθως μέσω ενός ισοζυγισμένου δυαδικού δέντρου. Οι επιπλέον μέθοδοι του συγκεκριμένου interface είναι οι εξής: 
 + 
 +  * **[[http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html#firstKey()|firstKey()]] - ** Επιστρέφει το 1ο κλειδί. 
 +  * **[[http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html#lastKey()|lastKey()]] - ** Επιστρέφει το τελευταίο κλειδί. 
 +  * **[[http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html#headMap(K)|headMap(K toKey)]] - ** Επιστρέφει το υποσύνολο του Map που τα κλειδιά του είναι μικρότερα από την τιμή //toKey//
 +  * **[[http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html#tailMap(K)|tailMap(K fromKey)]] - ** Επιστρέφει το υποσύνολο του Map που τα κλειδιά του του είναι μεγαλύτερα ή ίσα από την τιμή //fromKey//
 +  * **[[http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html#subMap(K,%20K)|subMap(K fromKey, K toKey)]] - ** Επιστρέφει το υποσύνολο του Set από fromKey (μαζί με το fromKey) έως toKey (χωρίς το toKey). 
  
 ===== Υλοποιήσεις ===== ===== Υλοποιήσεις =====
Line 39: Line 46:
   * **[[https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html|LinkedHashMap]]:** Υλοποιεί το Map μέσα από ένα [[wp>Hash_table|HashTable]] με παράλληλη χρήση διπλά συνδεδεμένης λίστας. Γρήγορο στην αναζήτηση. Εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα, λόγω της ύπαρξης της λίστας. Απαιτεί κατά κανόνα περισσότερο χώρο αποθήκευσης από τον στοιχεία που περιέχει το Map. Η κλάση που υλοποιεί το κλειδί κάθε εγγραφής πρέπει να υλοποιεί τις μεθόδους [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-|public boolean equals(Object obj)]] και [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--|public int hashCode()]] της κλάσης [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html|java.lang.Object]].   * **[[https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html|LinkedHashMap]]:** Υλοποιεί το Map μέσα από ένα [[wp>Hash_table|HashTable]] με παράλληλη χρήση διπλά συνδεδεμένης λίστας. Γρήγορο στην αναζήτηση. Εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα, λόγω της ύπαρξης της λίστας. Απαιτεί κατά κανόνα περισσότερο χώρο αποθήκευσης από τον στοιχεία που περιέχει το Map. Η κλάση που υλοποιεί το κλειδί κάθε εγγραφής πρέπει να υλοποιεί τις μεθόδους [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-|public boolean equals(Object obj)]] και [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--|public int hashCode()]] της κλάσης [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html|java.lang.Object]].
  
-===== Παράδειγμα =====+===== Παράδειγμα 1ο ===== 
 +/* 
 +Παραλλάσουμε το παράδειγμα της λίστας, ώστε από τη λίστα να φτιαχτεί ένα ιστόγραμμα το οποίο δείχνει κάθε λέξη πόσες φορές εμφανίζεται μέσα στο κείμενο. Το ιστόγραμμα μπορεί να φτιαχτεί με τη βοήθεια ενός ''Map<String,Integer>'', όπου τα κλειδιά είναι οι λέξεις του κειμένου και οι τιμές είναι η συχνότητα εμφάνισης της λέξης μέσα στο κείμενο. 
 + 
 +<code java MapExample.java> 
 +import java.util.*; 
 +import java.io.*; 
 + 
 +public class MapExample { 
 + 
 +  public static void main(String []args) { 
 +   
 +    List<String> wordsList = new ArrayList<>(); 
 +    try(Scanner sc = new Scanner(new File(args[0]))) { 
 +      while(sc.hasNext()) { 
 +        String word = sc.next().toLowerCase(); 
 +        wordsList.add(word); 
 +      } 
 +       
 +      Map<String,Integer> wordHistogram= new TreeMap<>(); 
 +      Iterator<String> it = wordsList.iterator(); 
 +      while(it.hasNext()) { 
 +        String word = it.next(); 
 +       
 +        if(wordHistogram.containsKey(word)) 
 +          wordHistogram.put(word, wordHistogram.get(word) + 1); 
 +        else 
 +          wordHistogram.put(word, 1); 
 +      } 
 +         
 +      for(String word : wordHistogram.keySet()) 
 +        System.out.println(word+" -> "+ wordHistogram.get(word)); 
 +         
 +    } 
 +    catch(FileNotFoundException ex) { 
 +      System.out.println("Unable to open file \""+args[0]+"\""); 
 +    } 
 +  } 
 +
 + 
 +</code> 
 + 
 +<WRAP todo 80% center round> 
 +Τι θα γίνει εάν στο παραπάνω παράδειγμα αντί για [[https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html|java.util.TreeMap]] χρησιμοποιήσουμε [[https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html|java.util.HashMap]]; Σημειώστε ότι η κλάση [[https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html|java.util.TreeMap]] υλοποιεί τα interfaces [[https://docs.oracle.com/javase/8/docs/api/java/util/Map.html|java.util.Map]] και [[https://docs.oracle.com/javase/8/docs/api/java/util/SortedMap.html|java.util.SortedMap]], ενώ η κλάση [[https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html|java.util.HashMap]] μόνο τη interface [[https://docs.oracle.com/javase/8/docs/api/java/util/Map.html|java.util.Map]]. Δοκιμάστε το... 
 +</WRAP>
  
 +===== Παράδειγμα 2ο =====
 +*/
 <code java StudentMap.java> <code java StudentMap.java>
 import java.util.*; import java.util.*;
Line 90: Line 143:
 </code> </code>
  
-|Προηγούμενο: [[:java:jfc_intf_list | Interface java.util.List  ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:jfc_intf_sort Sorting ]] |+|Προηγούμενο: [[:java:jfc_intf_list | Interface java.util.List  ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:jfc_algorithms Αλγόριθμοι ]] |
  
  
  
java/jfc_intf_map.1584048013.txt.gz · Last modified: 2020/03/12 21:20 (external edit)