如何在链表中有效地获取元素对(Haxe)

时间:2016-01-25 07:28:04

标签: list haxe

我有一个对象列表,我想在此列表中返回每个可能唯一的对象对。以下是在Haxe中最有效的方法吗?

for (elem1 in my_list)
{
   for (elem2 in my_list)
   { 
      if (elem1 == elem2)
      {
         break;
      }
      trace(elem1, elem2);
   }
}

如果可能,我宁愿避免相等检查。我没有使用数组或向量的原因是这些列表将非常频繁地添加/删除,我不需要索引级访问。

1 个答案:

答案 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

顺便说一下,如果链表或数组实际上更快,它取决于内容,因为它现在使用索引。你应该测试/测量你的情况(如果它是性能评论师的代码,不要假设任何事情。)

在线试用
http://try.haxe.org/#2Ab3F