// "Fix all 'Stream API call chain can be replaced with loop' problems in file" "true"

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Main {
  public static Map<Integer, String> test(List<String> strings) {
      Map<Integer, String> mapping = new HashMap<>();
      for (String str : strings) {
          if (mapping.put(str.length(), str) != null) {
              throw new IllegalStateException("Duplicate key");
          }
      }
      return mapping;
  }

  public static Map<Integer, String> testMerge(List<String> strings) {
      Map<Integer, String> map = new HashMap<>();
      for (String s : strings) {
          if (!s.isEmpty()) {
              map.merge(s.length(), s, String::concat);
          }
      }
      return map;
  }

  public static TreeMap<Integer, String> testPut(List<String> strings) {
      TreeMap<Integer, String> map = new TreeMap<>();
      for (String s1 : strings) {
          if (!s1.isEmpty()) {
              map.put(s1.length(), s1.trim());
          }
      }
      return map;
  }

  public static TreeMap<Integer, String> testSupplier(List<String> strings) {
      TreeMap<Integer, String> map = new TreeMap<>();
      for (String s1 : strings) {
          if (!s1.isEmpty()) {
              map.putIfAbsent(s1.length(), s1);
          }
      }
      return map;
  }

  public static void main(String[] args) {
    System.out.println(testMerge(Arrays.asList()));
    System.out.println(testMerge(Arrays.asList("a", "bbb", "cc", "d", "eee", "")));
    System.out.println(testPut(Arrays.asList()));
    System.out.println(testPut(Arrays.asList("a", "bbb", "cc", "d", "eee", "")));
    System.out.println(testSupplier(Arrays.asList()));
    System.out.println(testSupplier(Arrays.asList("a", "bbb", "cc", "d", "eee", "")));
    System.out.println(test(Arrays.asList()));
    System.out.println(test(Arrays.asList("a", "bbb", "cc", "d", "eee", "")));
  }
}