我有以下代码,我在类里面经常使用它。
for (int i = 0; i < someList.size(); i++) {
for (int j = 0; j < someList.size(); j++) {
if (i != j) {
someList.get(i).sendMessageTo(someList.get(j))); //variable action
}
}
}
循环的目的是让列表中的每个元素向列表中除自身以外的每个元素发送消息(或执行另一个操作)。
有什么方法可以创建辅助方法,这样我就不必重复循环代码。
编辑: 我只需要一个辅助方法来处理 for 循环和 if 算法。我将提供列表和我需要使用的任何操作。它应该适用于所有人。
我希望能够声明变量 Action 并调用辅助方法。
谢谢。
最佳答案
你可以这样做(我不知道你的列表中是什么类型,我称之为元素):
public interface ApplySomeAction
{
public apply(Element e1, Element e2);
}
...
public void applyActionToAllElements(ApplySomeAction action)
{
for (int i = 0; i < someList.size(); i++) {
for (int j = 0; j < someList.size(); j++) {
if (i != j) {
action.apply(someList.get(i), someList.get(j));
}
}
}
}
稍后调用它:
applyActionToAllElements(new ApplySomeAction() {
public apply(Element e1, Element e2)
{
e1.sendMessageTo(e2));
}
};
如果您经常只用其中一个元素执行操作,则可以只用一个元素创建另一个界面+方法。
关于java - 重构嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172709/