I am trying to write a recursive method that searches through a list of IData objects and returns a specific implementation. The list contains objects that implements the interface IData.
There are two implementations of this interface:
1) DataImpl
2) DataContainerImpl
The DataContainerImpl has a:
List<IData> children;
so it can hold nested DataContainerImpl elements or just plain DataImpl's. Here is what I do:
public static DataContainerImpl findDataContainerWithName(Collection<IData> elements, String name) {
for (IData element : elements) {
if (element instanceof DataContainerImpl) {
DataContainerImpl container = (DataContainerImpl) element;
if (container.getName().equals(name)) {
return container ;
}
container = findDataContainerWithName(container.getChildren(), name);
if (container != null) {
return container ;
}
}
}
return null;
}