我有一个包含地址的列表,例如地址 - 例如城市,街道,名称。
始终需要收到3个列表:首先按城市排序,第二个按街道排序,第三个按名称排序。很明显,可能的顺序是相同的列表。但它耗费了很多时间。 是否有可能创建类似Iterator的东西,可以依赖参数以相应的顺序返回集合的所有成员?还是存在另一种解决方案?
感谢。
答案 0 :(得分:1)
不使用标准的java集合框架。你要求工作的是什么,你必须建立不同的搜索树,在同一个集合上运行。
就像在DB
中的不同列上有索引一样答案 1 :(得分:1)
您可以根据每个条件项构建3个Comparators-1,然后调用Collections.sort(List,Comparator)来获取每个排序。
如果您在同一个列表上多次这样做,请复制3份。
请注意,迭代器的想法实际上并不是非常有效,因为它需要一些方法来跟踪列表,这至少与排序一样难看。也就是说,迭代器需要知道接下来哪个项目,除了列表的自然顺序之外的其他方式。重新排序列表就像尝试将其导出自然顺序一样容易。