我有一个编码类的问题,我必须在arraylist中返回最大字符串(按字典顺序)的位置。我不知道从哪里开始,有人可以帮我解决这个问题吗?>
答案 0 :(得分:0)
Comparator类允许您非常干净地在List上强加订单。
List<String> data = new ArrayList<>();
data.sort(Comparator.comparing(String::length).reversed());
data.get(0); // Will return the largest String
这将使用String length()方法对List进行排序并反转顺序,以便它首先对最大的String进行排序。请注意,您可以添加子排序,以便确定关系如何被破坏(对象被比较为相同)。为此,请按重要性顺序对数据进行排序,从最小开始。
data.sort(Comparator.comparing(String::hashCode));
data.sort(Comparator.comparing(String::length).reversed());
将使用hashCode()方法然后使用length()进行排序。这将具有按长度排序的效果,其中tie由hashCode(通常尝试唯一地区分对象)打破。