public void getpercentages() { HashMap temp_shares = new HashMap(); HashMap final_shares = new HashMap(); Double total_temp_shares = 0.0; Double total_final_shares = 0.0; for (int x = 0 ; x < drugs_to_analyze.length; x++) { // Set overall market shares for niaspan if (drugs_to_analyze[x].equals("Niaspan")) { for (Drug it : drugs) { if (it.getname().equals(drugs_to_analyze[x])) { temp_shares.put(it.getname(), it.getmarket_share()); it.setmarket_share(0.25 * it.getmarket_share()); final_shares.put(it.getname(), it.getmarket_share()); } } } // Calculate information on combination drugs if (drugs_to_analyze[x].contains("_Niaspan")) { String[] temp = drugs_to_analyze[x].split("_"); for (Drug it : drugs) { if (it.getname().equals(temp[0])) { temp_shares.put(it.getname(), it.getmarket_share()); } } } } // Calculate market shares for drugs combined with Niaspan for (Double it : temp_shares.values()) { total_temp_shares += it; } // Set overall market shares for combinations with Niaspan, and non-combination drugs (excluding Niaspan) for (int x = 0 ; x < drugs_to_analyze.length; x++) { for (Drug it : drugs) { if (drugs_to_analyze[x].equals(it.getname()) && it.getname().contains("_Niaspan")) { String[] temp = it.getname().split("_"); it.setmarket_share(temp_shares.get("Niaspan") * .75 * (temp_shares.get(temp[0]) / (total_temp_shares - temp_shares.get("Niaspan")))); final_shares.put(it.getname(), it.getmarket_share()); } else if (!drugs_to_analyze[x].contains("_") && !drugs_to_analyze[x].contains("Niaspan") && it.getname().equals(drugs_to_analyze[x])) { final_shares.put(it.getname(), it.getmarket_share()); } } } // Find out percentages to be used for each Drug // Calculate totals from final shares for (Double it : final_shares.values()) { total_final_shares += it; } // Calculate percentages based on totals for (Map.Entry it : final_shares.entrySet()) { percentages.put(it.getKey().toString(), (Double.parseDouble(it.getValue().toString()) / total_final_shares)); } }