【发布时间】:2019-11-16 02:39:17
【问题描述】:
我有 2 个列表。一个,只有父对象,另一个可能有它的子对象。
由于这些列表可能很大,我需要一种方法来仅获取子对象,方法是比较两个列表,而不是 O(n^2)
对象成为子对象的条件是它应该以其父对象名称作为其基础。例如:'abcd' 将是 'abc' 的子对象。
List<String> childList=new ArrayList<>();
for(String parent: parentList){
for(String child: childList){
if(child.matches(parent + "(.*)"))
childList.add(child)
}
}
对于大约 14k 个对象,这需要大约 10 秒。有人可以帮我优化一下吗
【问题讨论】:
-
要么你错过了什么,要么我错过了一些东西。在您当前的代码中,什么都不会发生...
childList在初始化时为空,第二个FOR循环将进行 0 次迭代.. -
使用 trie 作为数据结构。
-
对每个列表进行排序,然后按顺序遍历每个列表。
-
子字符串到底长什么样?有没有办法查看父名的结尾?一些示例数据会非常有用。
标签: java algorithm optimization