java - 重构嵌套循环

标签 java loops

我有以下代码,我在类里面经常使用它。

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/

相关文章:

java - socket接收数据时Java Socket中是否有事件?

python - 在for循环中寻找最长的字符串

bash - 使用 lftp 执行动态命令 - 多个命令

javascript - 这个 JS forEach 函数可以变得更简单或更优雅吗?

java - 将此 json 映射到 java 对象 (pojo)

java - 修剪输入框并添加到上下文 JSTL

Java boolean 条件while循环似乎忽略了if语句?

python - Selenium RC : how to capture/handle error?

Java 身份验证程序问题

java - 在javafx的选择对话框中查找点击了哪个按钮