Skip to content

Commit

Permalink
Updated to use IdentityHashMap for cycle detection for improved perfo…
Browse files Browse the repository at this point in the history
…rmance.
  • Loading branch information
jdereg committed Apr 6, 2024
1 parent e47f315 commit a2c24a1
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions src/main/java/com/cedarsoftware/util/ClassUtilities.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;
Expand Down Expand Up @@ -75,7 +76,6 @@ public class ClassUtilities
primitiveToWrapper.put(byte.class, Byte.class);
primitiveToWrapper.put(short.class, Short.class);
primitiveToWrapper.put(void.class, Void.class);

}

/**
Expand Down Expand Up @@ -112,9 +112,9 @@ public static int computeInheritanceDistance(Class<?> source, Class<?> destinati
}

Queue<Class<?>> queue = new LinkedList<>();
Set<Class<?>> visited = new HashSet<>();
Map<Class<?>, String> visited = new IdentityHashMap<>();
queue.add(source);
visited.add(source);
visited.put(source, null);

int distance = 0;

Expand All @@ -130,9 +130,9 @@ public static int computeInheritanceDistance(Class<?> source, Class<?> destinati
if (current.getSuperclass().equals(destination)) {
return distance;
}
if (!visited.contains(current.getSuperclass())) {
if (!visited.containsKey(current.getSuperclass())) {
queue.add(current.getSuperclass());
visited.add(current.getSuperclass());
visited.put(current.getSuperclass(), null);
}
}

Expand All @@ -141,9 +141,9 @@ public static int computeInheritanceDistance(Class<?> source, Class<?> destinati
if (interfaceClass.equals(destination)) {
return distance;
}
if (!visited.contains(interfaceClass)) {
if (!visited.containsKey(interfaceClass)) {
queue.add(interfaceClass);
visited.add(interfaceClass);
visited.put(interfaceClass, null);
}
}
}
Expand Down

0 comments on commit a2c24a1

Please sign in to comment.