我有以下简单类,包含String和Int。
private static class SuggestionAndScore
{
private String suggestion;
private int score;
}
我将列出这些可能包含 500,000 项目的对象。 根据得分值对此进行排序的最佳方法是什么?我应该让类实现Comparator并在其上使用Collections.sort还是有更好的方法? 性能至关重要因此我的问题是,我想确保我得到最佳解决方案。
答案 0 :(得分:1)
需要了解的是,排序方法会将整个集合加载到内存中,因此,如果您的SuggestionAndScore对象很大(可能是因为大的建议字符串),您将消耗大量内存,甚至可能导致系统崩溃。如果您认为记忆可能是一个问题,那么使用就地排序。如果内存不是问题,那么使用TreeSet。
答案 1 :(得分:0)
如果您的所有对象都是唯一的,请使用TreeSet
。由于对象已按排序顺序存储,因此性能最佳。 (你甚至不需要调用Collections.sort())