Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //W odpowiedzi na zainteresowanie naszą ofertą pracy chcielibyśmy zaprosić Pana do pierwszego etapu rekrutacji na stanowisko Java //Developer w firmie Horus.
- //Poniżej przekazujemy zadanie z prośbą o analizę poniższego kodu i zaimplementowanie metod findByCode, findByRenderer, count w klasie //MyStructure - najchętniej unikając powielania kodu i umieszczając całą logikę w klasie MyStructure. Z uwzględnieniem w analizie i //implementacji interfejs ICompositeNode!
- //Prosimy o wykonanie zadania bez korzystania z pomocy.
- import java.util.Iterator;
- import java.util.List;
- interface IMyStructure {
- // zwraca węzeł o podanym kodzie lub null
- INode findByCode(String code);
- // zwraca węzeł o podanym rendererze lub null
- INode findByRenderer(String renderer);
- //zwraca liczbę węzłów
- int count();
- }
- public class MyStructure implements IMyStructure {
- private List<INode> nodes;
- private Iterator<INode> iterator = nodes.iterator();
- private INode iNode;
- @Override
- public INode findByCode(String code) {
- return iterate(code);
- }
- @Override
- public INode findByRenderer(String renderer) {
- return iterate(renderer);
- }
- private INode iterate(String s) {
- while(iterator.hasNext()){
- INode iNode = iterator.next();
- if(isCompositeNode(iNode)) {
- nodes.addAll(((ICompositeNode) iNode).getNodes());
- }
- if (iNode.getCode().equals(s)) {
- return iNode;
- }
- }
- return null;
- }
- @Override
- public int count() {
- int i=0;
- for(INode iNode : nodes){
- if(isCompositeNode(iNode)){
- i+=((ICompositeNode) iNode).getNodes().size();
- }
- else
- i++;
- }
- return i;
- }
- private boolean isCompositeNode(INode iNode){
- return(iNode instanceof ICompositeNode);
- }
- }
- interface INode {
- String getCode();
- String getRenderer();
- }
- interface ICompositeNode extends INode {
- List<INode> getNodes();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement