플래쉬에서 외부테이터를 연동하기 위해서 사용 하는 함수가 기존엔 loadvars였는데 이번에도 새롭게 바뀌었다. 링크를 걸어주는것과 대동소이 한것 같다... 아쉽게도 아직까지 실무에서 사용을 하지 않기 때문에 페이지에 값을 넣는건 아직 해보지 못하고 있지만.... 시간이 허락하는데로 테스트를 해봐야 겠다...^^
more..
플래쉬에서 외부테이터를 연동하기 위해서 사용 하는 함수가 기존엔 loadvars였는데 이번에도 새롭게 바뀌었다. 링크를 걸어주는것과 대동소이 한것 같다... 아쉽게도 아직까지 실무에서 사용을 하지 않기 때문에 페이지에 값을 넣는건 아직 해보지 못하고 있지만.... 시간이 허락하는데로 테스트를 해봐야 겠다...^^
more..
more..
AS 3.0은 파라미터의 갯수와 타입을 미리 정해준다.
만약 전달되어야할 파라미터의 갯수가 다르다면 아웃풋 창에서 에러를 만나게 된다..^^;;;
머 이 에러 메세지가 프로그램어들에게는 정말 고마우면서도 달갑지 안고 보고 싶지 않은 메세지이다...ㅎㅎ
그런데 코딩을 하다보명 항상 파라미터의 갯수가 같을수는 없다 값이 달라지거나 해야할 경우가 분명 생긴다. 그래서 해결책이 없을까 찾다 보니 역시나 헬프에 있었다...ㅋㅋ
방식은 의외로 간단하다....^^
more..
출처 : http://www.freejava.wo.to/ 저작자(프리맨)
-HashTable Class-
지난 강좌에 배웠던 Vector 클래스는 어떻게 좀 이해가 되시나요? ^^ 메소드를 응용한 프로그램들을 많이 만들다 보면 그냥 책을 읽는 것보다는 훨씬 더 이해가 빠를것입니다. 그러니 여러가지 예제소스를 직접 만들어서 실행해 보세요.
에러가 난다고 두려워 마시고 그 에러를 많이 내고 또한 많이 잡아야지 실력이 향상되는 것입니다.
그러니 열심히 하시기를 다시 한번 기원해보며 이번 강좌를 진행하겠습니다.
이번 강좌에서 배우게될 유용한 클래스는 Hashtable 클래스 입니다. 이 클래스는 지난 강좌에서 보았던 Vector와 마찬가지로 데이터를 저장할수 있는 클래스 입니다. 단, 조금 다른 점이 하나 있는데 Vector 저장 객체 같은 경우는 데이터만 저장하는 거고 Hashtable 클래스는 데이터만 저장하기 보다는 보통 key와 key에 따른 value값을 저장할수 있습니다. 무슨 말인고 하니 자료를 쌍으로 받는다는 거죠. 좀 더 자세히 설명드리자면 "test" 라는 String형 데이터가 있다고 치면 Vector 저장 객체는 단지 "test"라는 것만 저장을 시키는데 반해 Hashtable 클래스는 "test" 라는 것과 또 다른 값을 동시에 집어 넣을 수 있습니다.
"test" 가 key 값이 되면 그에 따른 또 다른 value값을 넣어 줄 수 있고
"test" 가 value 값이 되면 그에 따른 또 다른 key값을 넣어 줄 수 있는 것입니다.
그런데 이게 무슨 장점이 있을까요? 하하 장점이 벌써 뭔지 아시겠다고요. 쉿~ 모르는 사람들을 위해서 조용히 하시길...^^
예 그겁니다. Hashtable은 key와 key에 따른 value값을 집어 넣을 수 있기 때문에 key 값으로 내가 원하는 데이터를 추출해 낼수 있는 것이죠. 한마디로 key를 이름으로 생각하면 이름만 알면 내가 집어 넣은 값을 손쉽게 얻어 낼 수 있다는 것입니다. 손쉽게 데이터에 이름표를 붙였다고 생각하십시요. (자료에 이름표를 달자~~)
이것은 보통 자주쓰는 String형이나 기본타입의 자료형에는 그리 유용해 보이지 않을지 모르지만 만약, 우리가 자바의 특성에 따라 클래스나 객체를 자료형으로 삼아 데이터를 넣었을 경우에는 아주 유용하게 사용할 수 있습니다.
한번 생각해 보세요. 만약 Vector 저장 객체를 Hashtable 클래스에 넣게 된다면(당근 key를 주겠죠.)어떤식으로 이용되는지 조금은 머리속에 떠오르시나요 그럼 좀 더 자세한 것을 알아보겠습니다. Hashtable 클래스를 인스턴스화 할때 사용되는 생성자는 모두 4가지가 있지만 그중 자주 사용되는 것은 2가지 입니다.
Hashtable()
Constructs a new, empty hashtable with a default capacity and load factor, which is 0.75.
(기본 용량 및 로드 인자를 가진 빈 신규 해시테이블을 구성합니다.)
Hashtable(int initialCapacity)
Constructs a new, empty hashtable with the specified initial capacity and
default load factor, which is 0.75.
(지정된 초기 용량에 기본 로드 인자를 가진 빈 신규 해시테이블을 구성합니다. )
이렇듯 생성자를 이용 Hashtable 클래스의 인스턴스를 생성하고 난후 이제부터 알아볼것은 사용되어질 메소드입니다.
void | clear() |
boolean | containsKey(Object key) |
boolean | containsValue(Object value) |
Enumeration | elements() |
Object | get(Object key) |
Object | put(Object key, Object value) |
Object | remove(Object key) |
int | size() |
음.... 메소드가 생각보다 없군요. 지금 보시는 메소드들이 Hashtable 클래스를 사용할때 사용되어질 메소드들 입니다. 본래의 API에는 이것보다 훨씬 더 많은 메소드가 있지만 주로 사용되는 메소드와 반드시 알아야할 메소드만 추린겁니다. (이해하시길....^^ 나머지 메소드는 API를 보고 직접 참고하세요. 그것도 실력 향상의 지름길입니다.) 메소드의 설명을 보시고 쉽게 이해가 가지 않으신가요? Vector편의 강좌를 잘들으신 분들은 아마 쉽게 이해할실겁니다. Vector 클래스의 메소드와도 비슷한 메소드가 많이 있죠.
우선 clear()란 메소드는 단어뜻 그대로 '깨끗이' 만드는 메소드입니다. 이것은 결국 remove() 메소드랑 같은 뜻이죠. 바로 Hashtable 클래스에 저장되어 있는 자료를 지우는 행동을 합니다. 이 두 메소드의 차이점은 clear()는 Hashtable 클래스에 저장되어 있는 모든 자료를 깨끗이 만드는 거고,remove() 메소드는 Object형 key 값을 받아서 Hashtable 클래스에 저장되어 있는 자료 중에 key값이 같은것이 있나 찾아보고 있을경우 key값이 같은 것만 지우는 행동을 합니다. 즉 일반 삭제와 완전 삭제의 차이죠.
그 다음에 볼 메소드가 containsKey() 메소드입니다. containsKey() 메소드는 Object형으로 key값을 인자로 받아 Hashtable 클래스에 저장되어 있는 key값 중에 인자로 들어온 값이 있나 없나 확인하는 메소드 입니다.당근 containsValue() 메소드는 설명안해도 어떤 메소드인지 아시겠죠.
이제 직접적으로 자료 입,출력에 관계된 메소드를 살펴보면 put() 이라는 메소드가 있습니다. 이 메소드는 Hashtable 클래스에 자료를 저장하는데 key와 key에 따른 value값 두 값을 동시에 저장 합니다.
그리고 get() 이라는 메소드는 key값을 인자로 받아 위에서 처럼 저장된 자료중에서 key값이 동일한 값의 value값을 Object형으로 리턴해줍니다.이 두개의 put(), get() 메소드가 기본적으로 Hashtable의 자료 입,출력에 관계된 메소드로서 기본적인것 만큼 가장 자주 쓰이는 메소드이니 Hashtable 클래스와 함께 생각해 두시기 바랍니다.마지막으로 size()라는 메소드는 설명안해도 바로 짐작하실테지만 Hashtable 클래스에 얼마나 많은 자료가 저장되어있는가 즉, 크기를 int형 값으로 반환해주는 메소드입니다.
후후... 제가 제시했던 메소드에 관한 대략적인 설명은 다 보셨습니다. 그리 어렵지 않죠.^^
그럼 소스를 보면서 정확히 어떤식으로 쓰이고 어느때 쓸 수 있는 메소드인가를 님들 스스로 유추해 보시기 바랍니다.
import java.util.*; public class HashtableTest { Hashtable hash; public HashtableTest() { hash = new Hashtable(); } public void inputData(String text[]) { for (int i=0 ; i < text.length ; i++) { hash.put(""+i,text[i]); } } public void printData() { System.out.println("size() -> " + hash.size()); HashtableEnumeration(hash); System.out.println("get(\"0\") -> " + hash.get("0")); System.out.println("remove(\"0\") -> " + hash.remove("0")); System.out.println("get(\"0\") -> " + hash.get("0")); System.out.println("containsKey(\"2\") -> " + hash.containsKey("2")); System.out.println("containsValue(\"test1\") -> " + hash.containsValue("test1")); hash.clear(); System.out.println("clear() and get(1) -> " + hash.get("1")); } public void HashtableEnumeration(Hashtable has) { Enumeration enu = has.elements(); while(enu.hasMoreElements() ) { System.out.println("Enumeration -> " + enu.nextElement()); } } public static void main(String[] args) { String[] text = {"test1", "test2", "test3", "test4", "test5"}; HashtableTest ht = new HashtableTest(); ht.inputData(text); ht.printData(); |
::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::