gpt4 book ai didi

java - 从 ArrayList 调用所有组合方法的最有效方法?

转载 作者:行者123 更新时间:2023-11-29 07:53:46 24 4
gpt4 key购买 nike

我有一个项目数组列表,每个项目都有一个将任何其他项目作为参数的方法。确保我对每对可能的项目调用该方法而不重复它们的最有效方法是什么? (可以假定所有项目都是唯一的)。

我的代码:

public boolean hasConflict (ArrayList<Item> items) {
// For every possible pair of items...
one = items.get(i);
two = items.get(j);

if ( one.conflictsWith (two)) {
return true;
}

// If we reach the end of the list without finding a conflict
return false;
}

编辑:

one.conflictsWith (two) 将返回与 two.conflictsWith (one) 相同的值,很抱歉忘记了这一点。

conflictsWith 方法不比较以查看两个值是否重复,因此不幸的是我无法使用哈希表来对其进行排序。

最佳答案

很简单,如果您不需要调用 a.conflictsWith(b) 以及 b.conflictsWith(a),您可以通过以下方式节省一些时间:

for(int i = 0; i < list.size(); ++i) {
final MyClass curr = list.get(i);
for(int j = i + 1; j < list.size(); ++j) {
curr.conflictsWith(list.get(j));
}
}

即遍历 List,然后在第二个循环中,遍历 List剩余部分

否则你需要遍历所有

for(int i = 0; i < list.size(); ++i) {
final MyClass curr = list.get(i);
for(int j = 0; j < list.size(); ++j) {
if(i != j) {
curr.conflictsWith(list.get(j));
}
}
}

关于java - 从 ArrayList 调用所有组合方法的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19364406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com