Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package O7AssocietiveArrays.Exercise;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.TreeSet;
- public class O9ForceBookMe {
- public static void main(String[] args) throws IOException {
- BufferedReader reader =
- new BufferedReader(
- new InputStreamReader(
- System.in
- )
- );
- LinkedHashMap<String, TreeSet<String>> profileInfo =
- new LinkedHashMap<>();
- String input;
- while (!"Lumpawaroo".equalsIgnoreCase(input=reader.readLine())) {
- String[] tokens = input.split("\\s+\\|\\s+|\\s+->\\s+");
- String forceSide;
- String forceUser;
- if (tokens.length > 1) {
- if (input.contains("|")) {
- forceSide = tokens[0];
- forceUser = tokens[1];
- if (!profileInfo.containsKey(forceSide)) {
- profileInfo.put(forceSide, new TreeSet<>());
- profileInfo.get(forceSide).add(forceUser);
- } else {
- for (Map.Entry<String, TreeSet<String>> kvp : profileInfo.entrySet()) {
- if (!kvp.getValue().contains(forceUser)
- && kvp.getKey().contains(forceSide)) {
- kvp.getValue().add(forceUser);
- break;
- }
- }
- }
- } else {
- forceSide = tokens[1];
- forceUser = tokens[0];
- profileInfo
- .forEach((key, value) ->
- value.remove(forceUser));
- if (!profileInfo.containsKey(forceSide)) {
- profileInfo
- .put(forceSide, new TreeSet<>());
- profileInfo
- .get(forceSide)
- .add(forceUser);
- System.out.println(String.format("%s joins the %s side!",
- forceUser,
- forceSide));
- } else {
- profileInfo
- .get(forceSide)
- .add(forceUser);
- System.out.println(String.format("%s joins the %s side!",
- forceUser,
- forceSide));
- }
- }
- }
- }
- profileInfo
- .entrySet()
- .stream()
- .sorted((meSecond, meFirst) -> {
- int sort = Integer.compare(meFirst.getValue().size(),
- meSecond.getValue().size());
- if (sort==0) {
- sort=meSecond.getKey().compareTo(meFirst.getKey());
- }
- return sort;
- })
- .forEach(littleFuck -> {
- if (littleFuck.getValue().size() > 0) {
- System.out.println(String.format("" +
- "Side: %s, Members: %d",
- littleFuck.getKey(),
- littleFuck.getValue().size()));
- littleFuck
- .getValue()
- .forEach(e->
- System.out.println(String.format(
- "! %s",
- e
- )
- )
- )
- ;
- }
- }
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment