I'm playing around with maps and sets and I've come across something which I cannot do. I'm trying to get the map interestsFans so it looks like:-
"Programming" { "Peter", "Luke" }
"Cycling" { "Peter", "Thomas" }
"Porno" { "Thomas", "Luke" }
ETC...
import java.util.*; public class Maps { public static void mapPlay() { Map<String, Set<String>> personInterests = new HashMap<String, Set<String>>(); Set<String> allInterests = new HashSet<String>(); Set<String> allPeople = new HashSet<String>(); Map<String, Set<String>> interestFans = new HashMap<String, Set<String>>(); Set<String> interests = new HashSet<String>(); interests.add("Programming"); interests.add("Cycling"); interests.add("Walking"); interests.add("Cinema"); personInterests.put("Peter", interests); interests = new HashSet<String>(); interests.add("Cinema"); interests.add("Cycling"); interests.add("Eating"); interests.add("Porno"); personInterests.put("Thomas", interests); interests = new HashSet<String>(); interests.add("Porno"); interests.add("Eating"); interests.add("Programming"); interests.add("Walking"); personInterests.put("Luke", interests); /** * Populates the set referenced by allPeople with all * the people in PersonInterests. Also populates the * set referenced by allInterests with all the interests in * personInterests. */ allPeople = personInterests.keySet(); for (String eachSetValue : personInterests.keySet()) { allInterests.addAll(personInterests.get(eachSetValue) ); } /** * Works out which people likes which interests and stores * this information in a map. interests represent * the map key and which people like the interests * represent the map values. */ for (String eachInterest : allInterests) { interestFans.put(eachInterest, new TreeSet<String>()); } for (String eachPerson : allPeople) { for (String eachInterest : personInterests.get(eachPerson)) { // ** HOW TO ADD THE PERSON NAME TO THE VALUE SET // ** OF THE MAP interestFans CORRESPONDING TO CORRECT // ** KEY IN interestFans ?? } } } }
The part im actually having problems with is:
for (String eachPerson : allPeople) { for (String eachInterest : personInterests.get(eachPerson)) { // ** HOW TO ADD THE PERSON NAME TO THE VALUE SET // ** OF THE MAP interestFans CORRESPONDING TO CORRECT // ** KEY IN interestFans ?? }
the specifications are:
for each person in allPeople
For each interest in that person’s personInterests
add the person to the set which is the value of that interest in personInterests
im sure lots of you will say you dont understand, and newither do I. I have read over this so many times and it just ties my brain in knots!! im very close to completing the question but I just cant finish it. Any help is much appreciated as I really want to understand this!
Thankyou in advance to anyone able and willing to help.