У меня есть это требование, когда мне нужно проанализировать текстовый файл, извлечь из него n-грамм и сохранить отображение n-грамм с их количеством на карте.Теперь ключ Map - это строка, в которой может содержаться 1,2,3 слова.
например ("mango", 10), ("facbook friend", 6), ("richguy ", 3) 1 <= n <= 3 </p>
Пример сопоставления:
(" манго ", 2)
(" яблоко ", 1)
("манговое дерево", 5)
("фейсбук друг", 3)
("фейсбук люди", 8)
("Новые часы ", 2)
Теперь я хочу отсортировать карту по длине лексем ключевых слов в ключе карты.как и все сопоставления из 1 слова, сначала в карте должно быть отображено 2 слова, затем 3 слова.
Я пытался использовать TreeMap, но основная задача заключалась в определении функции compareTo для порядка сортировки.Есть идеи?Подобный ниже метод не работает.
Map<String, Integer> m = new TreeMap<>(Comparator.comparingInt(k -> k.split(" ").length));
m.put("mango tree", 5);
m.put("Bought new watch", 2);
m.put("apple", 1);
m.put("mango tree", 5);
m.put("Bought new watch", 2);
m.put("appl1", 1);
m.put("mango 1", 5);
m.put("Bought 1 watch", 2);
m.put("appl2", 1);
m.put("mango 2", 5);
m.put("Bought 2 watch", 2);
m.put("appl3", 1);
System.out.println(m);
Вывод: {яблоко = 1, манговое дерево = 5, купил новые часы = 2}