2012-03-27 6 views
0

Ich habe Schwierigkeiten den richtigen Ansatz meines Problems zu finden. (NoobAlert!) Ich habe eine FOR-Schleife und innerhalb ich eine float-Nummer berechnen und fügen Sie es in einem Vektor . Jede Iteration der Schleife entspricht einer Gleitkommazahl und einem Namen (String). Nach der Schleife finde ich den minimalen Wert dieses Vektors, und mein Problem ist, dass ich keinen Weg finden kann, es mit der entsprechenden Zeichenfolge zu verbinden.Min Wert eines Vektors finden und die entsprechende Zeichenfolge zuweisen

Ich habe den Eindruck, dass es eine dumme Frage ist, und dass im wahrscheinlich an der falschen Stelle gesucht, doch ich brauche wirklich etwas Hilfe hier! Thnx für Ihre Aufmerksamkeit ..

Jeder Punkt entspricht eine Gleitkommazahl Das ist das Ergebnis eines Ranking-Algorithmus. Ich möchte einfach die minValue und seine corrisponding Artikel bekommen :-)

for (int j = 0; j < energySource.size(); j++) { 
        Item sourceItem = (Item) energySource.elementAt(j); 
        if (supply.description.isACover(sourceItem.description)) { 
         if (reasoner.checkCompatibility(supply.description, sourceItem.description)) { 

          int RPOT = reasoner.rankPotential(supply.description, sourceItem.description); 
          rSRC = alfaSRC * RPOT; 
         } else { 
          SemanticDescription[] contract = reasoner.contraction(sourceItem.description, supply.description); 
          int RPOT = reasoner.rankPotential(contract[1], sourceItem.description); 
          int RPAR = reasoner.rankPartial(contract[0], sourceItem.description); 
          rSRC = alfaSRC * RPOT + betaSRC * RPAR; 
         } 

         rTOT1 = (alfaTOT * rSRC + betaTOT * rSRC)/depthSrc; 
         totVector.add(rTOT1); 



         if (rTOT1 < minScore) { 
          minScore = rTOT1; 
          bestFunct = supply; 
          bestIndex = j; 
         } 

         System.out.println(supply.name + " + " + sourceItem.name + " >>>rTOT1 " + rTOT1); 

        } else { 
         candidati.removeElementAt(j); 
         j--; 
        } 


       } 

       //rTOT1min=>minValue of totVector 
       Object rTOT1min = Collections.min(totVector); 
       Float bestRank = (float) rTOT1min; 
       System.out.println(" Best Rank : " + bestRank + " Source chosen : " + ______???______); 
+3

Sie benötigen einen Code, um es zu veranschaulichen, was du tust. Es ist nicht klar, wie die Zahlen und Zeichenfolgen zusammenhängen. –

Antwort

0

Sie könnten vielleicht mit einem Hashtable mehr Glück haben. Dadurch können Sie eine Liste erstellen, in der ein Wert eindeutig einem Schlüssel zugeordnet ist. http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Hashtable.html

+0

thnx für die schnelle Antwort..ill geben Sie einen Blick –

+1

Hashtable gilt als Legacy-Code, Sie sollten stattdessen eine Map verwenden (zum Beispiel HashMap), es sei denn Thread-Sicherheit ist ein Problem in dem Fall könnten Sie eine ConcurrentMap verwenden. Ps: Ich sage nicht, dass dies der richtige Ansatz ist, nur die Hashtabelle zu kommentieren. – assylias

+0

notiert! Ich sehe es an. Thnx viel –

1

EDIT: Wie oben erwähnt, wäre eine HashMap eine gute Option sein, aber wenn Sie wollen zu viel Code nicht ändern:

Wenn Sie alle Zeichenfolgen in einer Liste oder einem Vektor sind Speichern oder eine solche Datenstruktur, dann wäre die einfache Option (ohne hoffentlich zu viel von Ihrem Code zu ändern), die indexOf() -Methode zu verwenden, um den Index des min-Werts des Vektors zu erhalten und diese zu verwenden, um die Zeichenkette unter Verwendung eines elementAt zu finden() Methode vorausgesetzt, dass Ihre Strings auch in einem Vektor gespeichert sind. Hier

ist ein Link auf die Vector JavaDoc

+0

sicher. Ich hoffe der Code hilft –

+0

Wie sind Sie/wo speichern Sie die Quellennamen? Sie können versuchen, es mit dem bestIndex, der der Index des kleinsten Werts zu sein scheint, abrufen. –