시각화/프로세싱

▶프로세싱 활용노트 ③ - loadStrings(), arrayList()

비주얼라이즈 2015. 1. 17. 23:39



▶프로세싱 활용노트  - loadStrings(), arrayList()




loadStrings()활용하기


loadStrings()의 문법, 기능 및 활용, 예시 순으로 살펴보려고합니다.






loadStrings()의 Syntax


loadStrings()의 Syntax는 크게 두 가지로 나눌 수 있다.


loadStrings(filename);

loadStrings(reader);




loadStrings()의 기능 및 활용


loadString()는 파일의 내용을 읽어 들여 '문자열 배열'형식으로 리턴합니다. loadStrings(파일이름)형태와 같이 파일이름이 파라미터로 사용하고자 할 경우에는 작업 진행이전에 현재 작업중인 Processing파일의 sketch폴더 내에 위치한 'data'폴더 내에 불러오고자하는 데이터파일을 위치시켜야합니다.




loadStrings(파일이름)의 형태로 사용하고자 할 경우


프로세싱에서 loadStrings()는 굉장히 다양한 경우에 활용됩니다. 그중에서 loadStrings(파일경로)와 같은 형태로 사용하고자 할 경우, 프로세싱 을 run하기 전에 미리 데이터를 다음과 같은 위치에 저장해두어야 한다.


sketch>data> [파일이 있어야할 곳]


위와 같이 프로세싱으로 로드하고자하는 파일을 미리 위치시켜야 한다.



폴더내에 저장된 데이터파일을 프로세싱으로 로드하는 기능 외에, loadStrings()는 url을 파라미터로 입력하여 데이터를 직접 불러올 수 있다.






loadStrings(url)형태로 사용하고자 할 경우의 예시



loadStrings()는 문자열 배열형태를 리턴하기때문에 그에 맞는 형식을 설정해주어야 한다.

String data[] = loadStrings("http://processing.org/about/index.html);


여기서 println은 단지 loadStrings()로 불러온 데이터가 몇줄로 구성되어있는지만을 보기위함이다.

println("there are " + lines.length + "lines");


문자열배열 형태를 그대로 println()할 경우 우리는 결과값을 볼 수 없다. 이 예제에서는, for()반복구문을 활용하여 그 속에서 data배열에 저장된 각 줄의 정보를 콘솔창에 출력함으로써 결과를 확인하도록한다.


for(int i = 0; i < data.length; i++){

println(data[i]);

}







loadStrings(url)예제의 결과화면



"there are 9 lines"을 통해 loadString(url)예제를 통해 로드된 정보는 총 9개의 줄로 구성되어있다는 것을 확인할 수 있다. 그 아래줄부터의 정보는 for()구문 내에서 data배열의 각 줄에 해당하는 정보를 println()기능으로 출력하도록 설정한 결과이다.



 loadStrings()의 에러


null값이 반환되는 경우 : 사용할 수 없는 파일이거나, 에러가 발생한 경우에 null값이 반환된다.

NullPointerException : 코드를 작성시, null값 여부를 체크하는 것을 포함하지않는경우에 일어날수있다.











ArrayList()활용하기



여기에서 <ExoPlanet>형태의 구문을 사용하는 것은,  ArrayList를 ExoPlanet 오브젝트로 채우고자 함이다.


ArrayList<ExoPlanet>planets = new ArrayList();





ArrayList()에 객체를 추가하기


ArrayList에 객체를 추가하는 것은 add()을 통해서 가능하다.


planets.add(p);






ArrayList()에서 객체를 빼기


객체를 arrayList에서 빼는 것도 가능하다.


ExoPlanet p = planets.get(0);







ArrayList()의 데이터 출력


ArrayList()에 몇개의 데이터가 있는지 출력하고자한다면 size()를 사용한다.

int total = planets.size();








ArrayList의 반복구문 활용방법 두가지


첫 번째. 카운팅을 이용하여 각 요소에 접근하기

for(int i = 0; i < planets.size(); i++){

ExoPlanet p = planets.get(i);

}


두 번째 방법은, 카운팅의 방식보다 개선된 방법이다.


for(ExoPlanet p : planets){

planets.display();

}




ArrayList()지우기



planets.remove(0);

println(planets.size());









ArrayList() 반복구문으로 뒤에서부터 지우기


이것은, for구문을 활용하면서 그 데이터에 뒤에서부터 접근하여 지워나가는 방법이다.


for(int i = planets.size-1; i > = 0; i--){

ExoPlanet p = planets.get(i);

if(p.finished()){

planets.remove(i);

}

}