我有一个包含学生对象(名称,卷号,地址和年龄)的树集,并按名称的升序存储,如果名称相同,则滚动编号。这个列表来自一个文件,可能会变得很大。
现在我必须提供一种方法来显示可以按任何顺序排列的列表 - 根据名称,年龄,地址或滚动号以升序/降序排序。我正在为我的问题寻找有效的解决方案。
我想做的是采取临时的arraylist并按照我想要的顺序将元素放入其中。但为此我必须为每个标准实施不同的方法,这对我来说效率低下。
有没有什么方法可以让我按照我想要的方式将树集中的元素放入数组中,因为我只需要打印值并在之后销毁临时列表
答案 0 :(得分:1)
如你所说,唯一的方法是迭代树并将所有匹配元素拉出到ArrayList中。完成后,您可以根据特定的比较器进行排序。
如果您只想根据自然顺序提取元素,可以使用子集方法,但这取决于树中的compareTo方法,该方法对您要执行的所有不同搜索无效。
鉴于此,您为什么首先使用TreeSet?您的元素是否具有TreeSet利用的自然顺序?如果不是,为什么不将它们全部转储到ArrayList中并根据需要对ArrayList进行排序?