2017-04-19 4 views
0

J'ai ce programme et je veux recueillir des valeurs dans ArrayList operatCible et les valeurs dans le tableau employeeYearsOfService et je veux stocker le résultat dans HashMap<String,integer> qui contient RowKey et le résultat.Addition table gaava et arraylist

Je ne sais pas comment le faire. Ce que je veux

result

code

public class collaborativAlgorithme { 

    Table<String, String, Double> employeeYearsOfService = 
    HashBasedTable.create(); 

    public static void main(String[] args) { 
    List<Double> operatCible = new ArrayList<Double>(); 
    operatCible.add(4.1); 
    operatCible.add(5.0); 
    System.out.println(operatCible); 

    Table<String, String, Double> employeeYearsOfService = 
    HashBasedTable.create(); 

    employeeYearsOfService.put("AT&T", "Stacy Lerner", 1.4); 
    employeeYearsOfService.put("Microsoft", "Stacy Lerner", 3.5); 
    employeeYearsOfService.put("Microsoft", "Bill Smith", 13.2); 
    employeeYearsOfService.put("Google", "Stacy Lerner", 11.5); 

    employeeYearsOfService.put("AT&T", "Bill Smith", 2.0); 
    employeeYearsOfService.put("Google", "Bill Smith", 9.75); 
    System.out.println(employeeYearsOfService.rowKeySet()); 
    HashMap<String,Integer> result=new HashMap<String,Integer>; 
    System.out.println(employeeYearsOfService); 
    Map<String, Double> attEmployees = employeeYearsOfService.row("AT&T"); 
    for (Map.Entry<String, Double> employee : attEmployees.entrySet()) { 
     // what i do?? 
     // sum values arraylist and values table 
     System.out.println("Employee Name: " + employee.getKey() + ", Years 
    of Service: " + employee.getValue()); 
    } 
    } 
} 
+0

Non celar ce que vous essayez de faire - vous avez des valeurs, il suffit de les additionner? Pourquoi 'Integer' dans la carte, pas' Double '? Quel est le problème avec operatCible et ses valeurs? – Xaerxess

+0

@Xaerxess je veux juste additionner les valeurs, je me suis trompé 'Double' dans la carte, l'affaire est que je veux des valeurs de somme dans' ArrayList' avec des valeurs dans 'Table' –

+0

Donc, juste additionner les chiffres que vous avez dans votre boucle dans' employé .getValue() 'avec ceux de la liste? Êtes-vous sur Java 8? – Xaerxess

Répondre

0

Je résolu mon problème Et j'ajouter quelque chose d'autre (sqrt) .... ce est le code

int k = 0; 
    Double sum = 0.0;//cosine similarity 
    Double sum2 = 0.0; 
    System.out.println(employeeYearsOfService); 
    for (String key : employeeYearsOfService.rowKeySet()) { 
     HashMap<String, Double> hm = new HashMap<String, Double>(); 
     for (Entry<String, Double> employee : 
     employeeYearsOfService.row(key).entrySet()) { 
      sum += employee.getValue() * operatCible.get(k); 
      sum2+=employee.getValue(); 
      k++; 
     } 
     k = 0; 

     System.out.println(sum); 
     System.out.println("----"); 
     System.out.println(sqrt(sum2)); 
     hm.put(key, sum); 
     sum = 0.0; 

     System.out.println(hm); 
    } 


} 
0

vous pouvez dou que

  HashMap<String, Double> hm = new HashMap<String, Double>(); 
     System.out.println(employeeYearsOfService); 
     for (String key : employeeYearsOfService.rowKeySet()) { 

     for (Entry<String, Double> employee : 
     employeeYearsOfService.row(key).entrySet()) { 
      sum += employee.getValue() + operatCible.get(k); 

      k++; 
     } 
     k = 0; 

     System.out.println(sum); 


     hm.put(key, sum); 


    } 
+0

merci je l'ai résolu –