优化嵌套循环java

时间:2018-03-03 18:27:53

标签: java networking compare ip-address

我有一个要求,即循环速度变慢。是否有更好的方法来编写或优化此代码。

背景

它与IP地址有关。出于超级网络。用户想要创建子网。但是,某些子网可能已经创建。不应显示那些创建的子网和网络。 例如 10.0.0.0/23是超网。 10.0.0.0/24已经创建。现在该函数应该只显示10.0.1.0/24并隐藏10.0.0.0/24。 我编写了代码,但速度非常慢。

代码

此函数比较两个IPAddress Arraylists。一个是DB中已经创建的子网,另一个是可以创建的总可能网络。如果任何网络属于任何已定义的网络范围。它将从所有网络列表中删除。

newPrefix 是用户为新子网输入的前缀。 existingSubs 是已在此Supernet中创建的ArrayList。 newSubs 是该超网中使用newPrefix的所有可能网络的ArrayList。

for (IPAddress exSub : existingSubs) {
  if (exSub.getNetworkPrefixLength() < newPrefix) {
    for (int i = 0; i < newSubs.size(); i++) {
      IPAddress newSub = newSubs.get(i);
      if (exSub.contains(newSub)) {
          newSubs.remove(newSub);
          i--;
      }
    }
  } else {
    for (int i = 0; i < newSubs.size(); i++) {
      IPAddress newSub = newSubs.get(i);
      if (newSub.contains(exSub)) {
        newSubs.remove(newSub);
        i--;
      }
    }
  }
}

我正在使用this

0 个答案:

没有答案