我有一个对象列表,我想在此列表中返回每个可能唯一的对象对。以下是在Haxe中最有效的方法吗?
for (elem1 in my_list)
{
for (elem2 in my_list)
{
if (elem1 == elem2)
{
break;
}
trace(elem1, elem2);
}
}
如果可能,我宁愿避免相等检查。我没有使用数组或向量的原因是这些列表将非常频繁地添加/删除,我不需要索引级访问。
答案 0 :(得分:0)
如果你想要有效(迭代次数较少),你可以像这样循环:
for (i in 0 ... my_list.length-1) // loop to total minus 1
for (j in i+1 ... my_list.length) // start 1 further than i, loop to end
if (my_list[i] != my_list[j]) // not match
[my_list[i], my_list[j]]]; // make pair
顺便说一下,如果链表或数组实际上更快,它取决于内容,因为它现在使用索引。你应该测试/测量你的情况(如果它是性能评论师的代码,不要假设任何事情。)