2016-04-27 7 views
1

Nachdem Sie die auf einer Webseite gefundenen Wörter gespeichert und mit der Anzahl der Vorkommen verknüpft haben, wie würden Sie sie nach Häufigkeit sortieren (am höchsten oder am niedrigsten)?Sortieren von Karten ohne Komparator, Arraylist oder Baumsatz

Die einzigen Importe, auf die ich Zugriff habe, sind Arrays, HashMap, HashSet, Map und Set. Ich habe nachgeforscht, wie man das macht, aber es scheint, als ob die meisten Leute vorgeschlagen haben, Komparatoren oder Iteratoren zu verwenden, die ich nicht implementieren möchte.

Die Karte ist wie folgt aufgebaut: Karte gefunden = neu HashMap <>();

Hier ist, was ich bisher:

import java.util.Arrays; 
import java.util.HashMap; 
import java.util.HashSet; 
import java.util.Map; 
import java.util.Set; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
import util.WebDoc; 

public class Sorting{ 

public static void main(String[] args) throws IOException { 
String url; 

url = “INSERT URL HERE”; 

final int numPairs = 30; // maximum number of pairs to print 

// get body of the web document 
String content = WebDoc.getBodyContent(url); 
String word_pattern = "[A-Za-z]{5,}"; 
Map<String, Integer> found = new HashMap<>(); // (word,frequency) 

Matcher match = Pattern.compile(word_pattern).matcher(content); 
int unique = 0; 
while (match.find()) { 
    String word = match.group().toLowerCase(); 

    System.out.println(word); 

     if (found.containsKey(word)){ 
      if (found.get(word)==1) 
       unique--; 
      found.put(word, found.get(word) +1); 
     } 
     else{ 
      found.put(word, 1); 
      unique++; 
     } 
    } 
} 
+0

Sind Sie sicher, dass Sie nicht [Paul] (http://stackoverflow.com/q/36871699/1553851)? – shmosel

+1

* "Die meisten Leute haben vorgeschlagen, Komparatoren oder Iteratoren zu verwenden ..." - Es gibt einen Grund dafür - * "... den ich nicht implementieren möchte." * - Warum nicht? – azurefrog

+0

Wenn jemand möchte, dass Sie ohne Iteratoren programmieren, sind sie entweder ein Troll oder sie wissen nicht, was ein Iterator ist. – shmosel

Antwort

0

Wenn Sie Ihre Meinung Dienstprogramme über die Verwendung von Grund JDK ändern, dann ist hier eine Möglichkeit, es mit Strömen zu tun:

List<String> sorted = found.entrySet() 
     .stream() 
     .sort(Comparator.comparing(Map.Entry::getValue).reversed()) 
     .map(Map.Entry::getKey) 
     .collect(Collectors.toList()); 
Verwandte Themen