본문 바로가기

Java

[Java] Class 와 ArrayList 사용예제


예제


예제



package FSA;

import java.util.ArrayList;
import java.util.List;

public class CKY {

	⁄**
	 * @param args
	 *⁄
	
	void createGrammar(){
		List<Grammar> grammar = new ArrayList<Grammar>();
		grammar.add(new Grammar("S","VP","VP"));
		System.out.println(grammar.get(0).parent +"->"+grammar.get(0).child1+" "+grammar.get(0).child2);
	
	}
	public static void main(String[] args) {
		⁄⁄ TODO Auto-generated method stub
		System.out.println("Usage: java Cyk grammar_file some_string");
		Grammar a = new Grammar();
		a.parent ="S";
		a.child1="NP";
		a.child2="VP";
		Grammar b = new Grammar();
		b.parent ="S";
		b.child2="NP";
		System.out.println(a.parent +"->"+a.child1 + " " + a.child2);
		System.out.println(b.parent +"->"+b.child1 + " " + b.child2);
		a.child1="vv";
		System.out.println(a.parent +"->"+a.child1 + " " + a.child2);
		Grammar c= new Grammar("NP","N");
		System.out.println(c.parent +"->"+c.child1 + " " + c.child2);
		System.out.println();
		
		CKY cky = new CKY();
		cky.createGrammar();
	}
	

}

class Grammar{
	String parent;
	String child1;
	String child2;
	Grammar(){}
	Grammar(String a,String b,String c){
		parent =a;
		child1 =b;
		child2 =c;
	}
	Grammar(String a,String b){
		parent =a;
		child1 =b;
	}
}

결과





설명



일단 ArrayList 와 List 를 각각 import 시켜야한다.

예제에서는 Grammar 에 parent,child1,child2 같은 String 을 각각 선언하였다.

그냥 Grammar a = new Grammar(); 와 같은 형식으로 선언해도 상관없지만 

만약 Grammar c 와 같은 경우처럼 간편하게 "NP","N" 을 한번에 넣을 수 있다.


그럴 경우 Grammar 클래스 안에 미리 선언을 해주고 넘어가면 된다.


        Grammar(){}
	Grammar(String a,String b,String c){
		parent =a;
		child1 =b;
		child2 =c;
	}
	Grammar(String a,String b){
		parent =a;
		child1 =b;
	}

가 바로 그 경우인데, 아무것도선언을 안해줄 경우에는 Grammar(){} 를 선언안해줘도 무관하지만 위와 같이 두개를 선언을 해주었을 경우에는 무조건 선언을 해줘야한다는 점을 명심하기 바란다.


그 후, 예제에서 처럼 각 parent, child1, child2 에 값을 대입하고 간단히 프린트를 해보았다.

그림과 같이 vv 를 갱신하고 다시 프린트하면 값이 바뀌는 걸 볼수 있다.

그리고 cky 와 같이 아예 자신의 클래스인 CKY()를 받아와서 createGrammar() 처럼 한번에 grammar라는 리스트를 만들 수 있어서 매번 다시 입력해야하는 번거로움을 줄일수 있다.(객체화의 장점)






예제



package FSA;

import java.util.ArrayList;
import java.util.List;

public class CKY {
	
	
	
	public static void main(String[] args) {
		⁄⁄ TODO Auto-generated method stub
		CKY cky = new CKY();
		List<Grammar> grammar = new ArrayList<Grammar>();
		⁄*grammar=cky.createGrammar();*⁄
		⁄*System.out.println(grammar.get(0).parent);;*⁄
		List<Scores>[][] score = new List[4][4];
		score[0][1] = new ArrayList<Scores>();
		score[0][1].add(new Scores("N","o","N"));
		score[0][1].add(new Scores("D","o","D"));
		score[0][1].add(new Scores("S","o","S"));
		
		System.out.println("This is Scores");
		System.out.println(score[0][1].get(0).parent+score[0][1].get(0).child1+score[0][1].get(0).child2);
		System.out.println(score[0][1].get(1).parent+score[0][1].get(1).child1+score[0][1].get(1).child2);
		System.out.println(score[0][1].get(2).parent+score[0][1].get(2).child1+score[0][1].get(2).child2);
		
	}
	

}

class Scores{
	String parent;
	String child1;
	String child2;
	Scores(){}
	Scores(String a,String b,String c){
		parent =a;
		child1 =b;
		child2 =c;
	}
	Scores(String a,String b){
		parent =a;
		child1 =b;
	}
}

결과






설명



이 예제는 개인적으로 Scores라는 클래스를 새로운 리스트의 형태로 받아서 마치 하나의 유동적인 Map 과 같은 형태를 만들고 싶어서 찾아보다가 만들게 되었다.

일단 위와 같이, score를 선언을 선언한다 하지만 4x4형태의 리스트(실제로는 Map)에 그 안에 ArrayList 형태로 구성하였기 때문에

예를 들면, [0][1]안에 여러개의 Scores 클래스를 순차적으로 삽입할수 있다. 그러므로 유동적인 형태의 Map을 만들수 있다.




'Java' 카테고리의 다른 글

[Java 강좌] 2장. 변수(2)  (4) 2013.08.14
[Java 강좌] 2장. 변수(1)  (0) 2013.06.20
[Java 강좌] 1장. About Java  (1) 2013.06.17