/** * Calculate Union interest between 2 AuthorInterest * * @param eachAuthorInterest1 * @param eachAuthorInterest2 * @return */ private AuthorInterest calculateUnionOfAuthorInterest( AuthorInterest eachAuthorInterest1, AuthorInterest eachAuthorInterest2) { AuthorInterest authorInterestResult = new AuthorInterest(); authorInterestResult.setLanguage(eachAuthorInterest1.getLanguage()); authorInterestResult.setYear(eachAuthorInterest1.getYear()); Map<Interest, Double> termsWeight1 = eachAuthorInterest1.getTermWeights(); Map<Interest, Double> termsWeight2 = eachAuthorInterest2.getTermWeights(); Map<Interest, Double> mergedTermWeight = new HashMap<Interest, Double>(); mergedTermWeight.putAll(termsWeight1); mergedTermWeight.putAll(termsWeight2); Map<Interest, Double> termsWeightResult = new HashMap<Interest, Double>(); for (Map.Entry<Interest, Double> eachMergedTermWeight : mergedTermWeight.entrySet()) { Interest interstKey = eachMergedTermWeight.getKey(); if (termsWeight1.get(interstKey) != null) { termsWeightResult.put( interstKey, (eachMergedTermWeight.getValue() + termsWeight1.get(interstKey)) / 2); } else { termsWeightResult.put(interstKey, eachMergedTermWeight.getValue()); } } if (!termsWeightResult.isEmpty()) authorInterestResult.setTermWeights(termsWeightResult); return authorInterestResult; }