method1とmethod2を実行するのに時間がかかるため、次のコードを改善するために助言が必要です。 RemoveFullyContainsを実行すると、私はmethod1とmethod2を呼び出しています。私は両方のメソッドの周りにタイムカウンタを配置し、両方のメソッドを実行するのに時間がかかることに気づいた。誰かが私にそれを改善するための指導を与えることができるかもしれません。 List
sがnullになることはありません場合forループコードは、パフォーマンスの向上が必要です
public static List<VG> RemoveFullyContains(List<VG> lTree) {
for (int x = lTree.size()-1; x >= 0; x--) {
VG vg1 = lTree.get(x);
for (int y = lTree.size()-1; y >= 0; y--) {
if (y != x) {
VG vg2 = lTree.get(y);
if (method1(vg2.getAndVar(), vg1.getAndVar())) {
if (method2(vg1.getNotVar(), vg2.getNotVar())) {
lTree.remove(x);
break;
}
}
}
}
}
return lTree;
}
private boolean method1(List<String> searchList, List<String> mainList) {
if (searchList == null || searchList.size() == 0) {
return true;
}
if (mainList == null || mainList.size() == 0) {
return false;
}
if (searchList.size() > mainList.size()) {
return false;
}
for (String item : searchList) {
if (!mainList.contains(item)) {
return false;
}
}
return true;
}
private boolean method2(List<String> list1, List<String> list2) {
if ((list1 == null || list1.size() == 0) && (list2 == null || list2.size() == 0)) {
return true;
}
if ((list1 == null || list1.size() == 0) || (list2 == null || list2.size() == 0)) {
return false;
}
if (list1.size() != list2.size()) {
return false;
}
for (String item : list1) {
if (!list2.contains(item)) {
return false;
}
}
return true;
}
VG is a class that has the following methods: hashcode, equal and clone
public class VG {
private List<String> andVar = new ArrayList();
private List<String> notVar = new ArrayList();
private List<VG> orVar = new ArrayList();
private VG parent;
....
}
誰かが私を助けてくれますか?上記のループの場合、if(!mainList.contains(searcList))で置き換えようとしましたが、カウンター時刻を表示しようとすると同じ結果になります –