Я хочу прибегнуть к ArrayList. Я искал и нашел только способы, которые предлагают создать собственный компаратор. Есть ли более простой способ сделать это?
Для ясности, вы видели, что в предложениях было написано Comparator
, чтобы можно было использовать Collections.sort()
для выполнения фактической сортировки .
Гораздо проще реализовать просто механизм для сравнения двух элементов вашего списка, чем писать целую подпрограмму сортировки (которая все равно должна знать, как сравнивать элементы). У вас также есть альтернатива для использования пользовательского подкласса HashMap
, который реализует Comparable
, но его будет не так легко подготовить, как подходящие Comparator
, и , вам нужно будет убедиться, что он был фактически используется везде, где элементы добавляются в список.
Так вот, написать Comparator
реализацию с нуля не так сложно, но в наши дни вам, вероятно, вообще не нужно этого делать. Интерфейс Comparator
теперь имеет несколько статических методов, полезных для построения экземпляров. Таким образом, для вашей цели вы, вероятно, могли бы сделать что-то простое, например:
Collections.sort(contactList, Comparator.comparing(m -> Integer.valueOf(m.get("dist"))));
Обратите внимание, что вы действительно создаете и используете Comparator
экземпляр , но вы избавлены от написания его класса. Я не думаю, что вы можете надеяться на гораздо более простое, чем это.