2016-10-28 7 views
1

ich mit der untenen Anforderung steckte und nicht sicher, wie kann ich damit fortfahren:vergleichen Daten von zwei oder mehr Karten

Ich habe eine Funktion wie:

public void compareExcel(Map<Object,List<HashMap>>) compareMaps){} 

Diese Funktion eine Karte nehmen als Eingabeparameter. Diese Zuordnung enthält die Zuordnung von Arbeitsblattname und Arbeitsblatt (Spaltenname - Spaltenwerte).

<Excel1,(scenario:10) 
     (timing: 20) 

Excel2,(scenario:30) 
     (timing: 40) 

Excel3,(scenario:50) 
     (timing: 60) 
> 

Hier ist meine Excel1 mit zwei Spalten (Szenario und Timings) und mit Werten wie 10 bzw. 20:

Grundsätzlich ist die Eingangsfunktionsparameter werden dergleichen sein.

Im Ergebnis werde ich den Vergleich wie mehr brauchen:

Karte>

<scenario, <excel1,10> 
      <excel2,30> 
      <excel3,50> 

timing, <excel1,20> 
      <excel2,40> 
      <excel3,60>  
> 

Jede Hilfe wird geschätzt.

+1

Ihr Code oder was auch immer es ist, ist sehr unklar. Versuchen Sie, Wörter zu verwenden, um Ihre Frage zu erklären. – shmosel

+1

Das ist kein Vergleich, das ist eine Rekopilation. – walen

+1

Haben Sie selbst etwas probiert? – talex

Antwort

1
Create/initialize the details of you output data-structure 

LOOP (over the excelName:List pairs in you input) 
    LOOP (over the List that is the value in the pair) 
     //Each entry in the list is a map 
     Get the key-name (e.g. "scenario") 
     Get the value (e.g. "10") 
     //You already know the out key (i.e the excelName) 
     With the three known values, build/add to your output data-structure 
0

Auf mobilen so dass ich nicht einmal Syntax überprüfen, aber ...

Map recopilation = new HashMap(); 
for(Object sheetName : compareMaps.keySet()) { 
    Map sheet = compareMaps.get(sheetName); 
    for (Object columnName : sheet.keySet()) { 
     if (recopilation.get(columnName) == null) { 
      recopilation.put(columnName, new HashMap()); 
     } 
     ((Map) recopilation.get(columnName)).put(sheetName, sheet.get(columnName)); 
    } 
} 

So ähnlich. Wenn es funktioniert, sollten Sie wirklich einige Generika hineinwerfen, ich habe nicht hauptsächlich etwas Tipparbeit sparen.

Verwandte Themen