Advertisement
dlackovi2

DSTG.java

Jan 22nd, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.15 KB | None | 0 0
  1. //When I wrote this, only God and I understood what I was doing.
  2. //Now, God only knows.
  3. package dstg;
  4.  
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. import java.util.HashMap;
  8. import java.util.Iterator;
  9. import java.util.LinkedHashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. import java.util.Map.Entry;
  13. import java.util.Scanner;
  14. import java.util.function.Function;
  15. import java.util.stream.Collectors;
  16.  
  17. @SuppressWarnings(value = "unchecked")
  18. public class DSTG
  19. {
  20.     public static void main(final String[] args)
  21.     {
  22.         Scanner input = new Scanner(System.in);
  23.         List<String> possibleFriends = new ArrayList<>();
  24.  
  25.         HashMap<String, List<String>> data = new HashMap<>();
  26.         data.put("Filip", Arrays.asList("Ivan", "Marko", "Lucija", "Ana"));
  27.         data.put("Mihovil", Arrays.asList("Marko", "Toni", "Karlo"));
  28.         data.put("Iva", Arrays.asList("Marko", "Katarina"));
  29.         data.put("Ivan", Arrays.asList("Filip", "Ana"));
  30.         data.put("Marko", Arrays.asList("Filip", "Mihovil", "Iva", "Toni", "Katarina"));
  31.         data.put("Toni", Arrays.asList("Mihovil", "Marko", "Lucija", "Katarina", "Karlo"));
  32.         data.put("Lucija", Arrays.asList("Filip", "Toni", "Ana"));
  33.         data.put("Katarina", Arrays.asList("Iva", "Marko", "Toni", "Karlo"));
  34.         data.put("Karlo", Arrays.asList("Mihovil", "Toni", "Katarina"));
  35.         data.put("Ana", Arrays.asList("Filip", "Ivan", "Lucija"));
  36.  
  37.         System.out.print("Ime osobe: ");
  38.         String person = input.next();
  39.         input.close();
  40.  
  41.         //trenutni prijatelji
  42.         List<String> personFriends = data.get(person);
  43.         for (String friend : personFriends)
  44.         {
  45.             //prolazi hashmapom
  46.             Iterator it = data.entrySet().iterator();
  47.             while (it.hasNext())
  48.             {
  49.                 Map.Entry<String, List<String>> pair = (Entry<String, List<String>>) it.next();
  50.                 //postojeci prijatelj
  51.                 if (pair.getKey().toString().equals(friend))
  52.                 {
  53.                     List<String> tempFriends = pair.getValue();
  54.                     for (String tempFriend : tempFriends)
  55.                     {
  56.                         //provjerava je li tražena osoba ili je već među prijateljima
  57.                         if (!tempFriend.equals(person) && !personFriends.contains(tempFriend))
  58.                         {
  59.                             possibleFriends.add(tempFriend);
  60.                         }
  61.                     }
  62.                 }
  63.             }
  64.         }
  65.  
  66.         //racunanje prioriteta
  67.         Map<String, Long> friendPriority = possibleFriends.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
  68.         //sortiranje
  69.         Map<String, Long> finalMap = new LinkedHashMap<>();
  70.         friendPriority.entrySet().stream().sorted(Map.Entry.<String, Long> comparingByValue().reversed()).forEachOrdered(e -> finalMap.put(e.getKey(), e.getValue()));
  71.  
  72.         System.out.println(System.lineSeparator() + "Mogući novi prijatelji:");
  73.         finalMap.forEach((name, count) ->
  74.         {
  75.             System.out.println(name + ": " + count);
  76.         });
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement