728x90
반응형
저번 글에 이어서 계속해서 사용법을 알아보자
https://developer-youn.tistory.com/66
아마 앞에서 한 내용들을 잘 응용하면 노드가 20개 넘게 달린 그래프를 그렸을 수도 있다.
내가 그 그래프들의 정보를 모두 획득하려면 어떻게 해야할지 코드를 통해 알아보자.
방법이 2가지가 있는데 내가 가장 정감이 가는 방법 먼저 설명을 하겠다.
Graph에는 nodes라는 함수가 있다.
graph.nodes();
이 함수의 리턴 타입은 NodeCursor라는 데이터타입이다.
NodeCursor nc = graph.nodes();
NodeList라는 데이터타입도 있다. 위에서 만든 nc를 생성자 파라미터로 받아 값을 채워넣을 수 있다.
NodeList nodeList = new NodeList(nc);
근데 내가 자바에서 for each를 돌듯이 사용하려고 for(Node node : nodeList) 처럼 될 줄 알았는데 안된다. 왜냐하면 이건 yFiles에서 자체적으로 만들었고 아마 List인터페이스를 상속받지 않아서 그런게 아닌가 싶다.
그래서 조금 더 원시적인 방법을 사용해야한다.
for(int i = 0; i < nodeList.size(); i++){
Node node = (Node)nl.get(i);
// TODO add code!
}
재미있는건 이름이 NodeList인데도 return type이 Object라 캐스팅을 해야한다.
이제 우리는 graph에 존재하는 모든 node의 리스트에 대해 접근을 할 수 있게 되었다.
2번째 방법은 어떻게 보면 좀 더 자바스럽다고 할 수 있을 것 같다.
NodeCursor를 그대로 이용하는 방법이다.
for(NodeCursor nc = graph.nodes(); nc.ok(); nc.next()) {
nc.node();
}
이런식으로 iterator처럼 하나씩 접근할 수 있다.
728x90
반응형