0

我有一个包含学生对象(姓名、卷号、地址和年龄)的树集,并按名称的升序存储,如果名称相同,则存储卷号。这个列表来自一个文件,可能会变得非常大。

现在我必须提供一种方法来显示可以按任何顺序排列的列表 - 根据姓名、年龄、地址或卷号按升序/降序排序。我正在为我的问题寻找一个有效的解决方案。

我正在考虑做的是获取一个临时数组列表并按照我想要的顺序将元素放入其中。但为此,我将不得不为每个标准实施不同的方法,这对我来说似乎效率低下。

有什么方法可以让我以我想要的方式将树集中的元素放入数组中,因为我只需要打印值并在之后销毁临时列表

4

1 回答 1

1

正如您所说,唯一的方法是遍历树并将所有匹配元素拉出到 ArrayList 中。完成后,您可以根据特定的比较器进行排序。

如果您只想根据自然顺序提取元素,则可以使用子集方法,但这取决于树中的 compareTo 方法,这对于您想要执行的所有不同搜索都无效。

鉴于此,您为什么首先使用 TreeSet?您的元素是否具有 TreeSet 所利用的自然顺序?如果不是,为什么不将它们全部转储到 ArrayList 并根据需要对 ArrayList 进行排序?

于 2013-01-21T06:17:57.173 回答