2014년 2월 19일 수요일

28. [C#,닷넷컬렉션]ArrayList,Quque,HashTable(큐,해시테이블,Collection,닷넷자료구조) 대부분의 응용프로그램에서 개체의 그룹을 만들어 사용하는 경우들이 있는데 개체의 배열을 만들거나 개체의 컬렉션을 만들어 개체를 그룹화할 수 있다. 배열의 경우 개체를 고정된 수만큼 만들고 이러한 개체로 작업할 때 상당히 유용하며 컬렉션을 사용하면 배열보다는 더 유연하게 개체 그룹에 대해 작업할 수 있다. :namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 배열과 달리 컬렉션에서는 응용 프로그램의 요구 변화에 따라 사용하는 개체의 그룹이 동적으로 증가하거나 줄어들 수 있으며 일부 컬렉션의 경우 키를 사용하여 개체를 빨리 검색할 수 있다. 1. System.Collections.ArrayList 크기가 동적으로 증가하는 배열을 사용하도록 IList 인터페이스를 구현 using System; using System.Collections; public class SamplesArrayList { public static void Main() { ArrayList onj = new ArrayList(); onj.Add("Onj"); onj.Add("OracleJava"); onj.Add("Community"); Console.WriteLine("onj List"); Console.WriteLine(" Count: {0}", onj.Count); Console.WriteLine(" Capacity: {0}", onj.Capacity); Console.Write(" onj Values:"); PrintValues(onj); ArrayList onj2 = (ArrayList)onj.Clone(); Console.Write(" onj2 Values:"); PrintValues(onj2); } public static void PrintValues(IEnumerable myList) { foreach (Object obj in myList) Console.Write(" {0}", obj); Console.WriteLine(); } } [결과] onj List Count: 3 Capacity: 4 onj Values: Onj OracleJava Community onj2 Values: Onj OracleJava Community 2. System.Collections.Quque 큐는 FIFO(First In First Out) 형태의 자료구조를 구현한 클래스로 메시지를 받은 순서대로 저장하는 데 유용하다. System.Collections.Quque 클래스는 큐를 순환 배열로 구현했는데 Queue 에 저장되는 개체들은 한쪽 끝에서 삽입되고 다른 쪽 끝에서 제거된다. 배열이나 리스트가 데이터에 자유롭게 접근하는 반면 큐는 입력은 오직 뒤(rear), 출력은 오직 앞(front)에서만 일어난다. 널 값을 허용하고 중복을 허용하는 자료구조 이다. using System; using System.Collections; public class SamplesQueue { public static void Main() { // Creates and initializes a new Queue. Queue myQ = new Queue(); myQ.Enqueue("Hello"); myQ.Enqueue("World"); myQ.Enqueue("!"); // Displays the properties and values of the Queue. Console.WriteLine( "myQ" ); Console.WriteLine( "\tCount: {0}", myQ.Count ); Console.Write( "\tValues:" ); PrintValues( myQ ); } public static void PrintValues( IEnumerable myCollection ) { foreach ( Object obj in myCollection ) Console.Write( " {0}", obj ); Console.WriteLine(); } } /* This code produces the following output. myQ Count: 3 Values: Hello World ! */ 3. System.Collections.HashTable 키(key), 값(value) 쌍으로 된 자료를 다루는 데 용이하다. 배열과 차이점이라면 배열이 자료에 접근하기 위해 인덱스를 사용하지만 해시테이블은 데이터베이스처럼 키 값을 사용한다는 것이다. 키 값은 어떤 형식도 가능하며 탐색 속고 또한 좋다. ArrayList에서 데이터 검색을 위해 이진탐색을 수행하거나 리스트를 순회하지만 HashTable은 키를 이용해 데이터를 빠르게 검색한다. 그러므로 키는 NULL값을 가질 수 없지만 값은 NULL일 수 있다. using System; using System.Collections; class Example { public static void Main() { Hashtable onj = new Hashtable(); // Add some elements to the hash table. There are no // duplicate keys, but some of the values are duplicates. onj.Add("name", "오엔제이프로그래밍"); onj.Add("tel", "02-851-4790"); onj.Add("url", "www.onjprogramming.co.kr"); onj.Add("addr", "서울 구로 디지털단지"); try { onj.Add("tel", "IT 114"); } catch { Console.WriteLine("키값 중복..."); } // The Item property is the default property, so you // can omit its name when accessing elements. Console.WriteLine("For key = \"name\", value = {0}.", onj["name"]); onj["name"] = "오라클자바커뮤니티"; Console.WriteLine("For key = \"name\", value = {0}.", onj["name"]); if (!onj.ContainsKey("who")) { onj.Add("who", "ONJSYSTEMS"); Console.WriteLine("Value added for key = \"who\": {0}", onj["who"]); } // When you use foreach to enumerate hash table elements, // the elements are retrieved as KeyValuePair objects. Console.WriteLine(); foreach (DictionaryEntry d in onj) { Console.WriteLine("Key = {0}, Value = {1}", d.Key, d.Value); } } } [결과] 키값 중복... For key = "name", value = 오엔제이프로그래밍. For key = "name", value = 오라클자바커뮤니티. Value added for key = "who": ONJSYSTEMS Key = url, Value = www.onjprogramming.co.kr Key = addr, Value = 서울 구로 디지털단지 Key = tel, Value = 02-851-4790 Key = who, Value = ONJSYSTEMS Key = name, Value = 오라클자바커뮤니티 [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecCsharp&wr_id=154 자바 오라클/빅데이터 아이폰/안드로이드 닷넷/WPF 표준웹/HTML5 채용/취업무료교육 초보자코스 [기업100%환급]Spring ,MyBatis,Hibernate실무과정 총 5일 40시간 02-24 [기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 총 5일 40시간 03-03 Spring3.X, MyBatis, Hibernate실무과정 총 12일 36시간 03-03 자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 총 24일 72시간 03-14 [주말저녁]자바기초에서JSP,Servlet,Ajax,jQUERY,스프링,마이바티스,하이버네이트 총 18일 72시간 02-22 자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 총 10일 70시간 03-01 Spring3.X, MyBatis, Hibernate실무과정 총 5일 35시간 03-09

28. [C#,닷넷컬렉션]ArrayList,Quque,HashTable(큐,해시테이블,Collection,닷넷자료구조)
 
대부분의 응용프로그램에서 개체의 그룹을 만들어 사용하는 경우들이 있는데 개체의 배열을 만들거나 개체의 컬렉션을 만들어 개체를 그룹화할 수 있다배열의 경우 개체를 고정된 수만큼 만들고 이러한 개체로 작업할 때 상당히 유용하며 컬렉션을 사용하면 배열보다는 더 유연하게 개체 그룹에 대해 작업할 수 있다.
:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 
배열과 달리 컬렉션에서는 응용 프로그램의 요구 변화에 따라 사용하는 개체의 그룹이 동적으로 증가하거나 줄어들 수 있으며 일부 컬렉션의 경우 키를 사용하여 개체를 빨리 검색할 수 있다.
 
 
1.     System.Collections.ArrayList
 
크기가 동적으로 증가하는 배열을 사용하도록 IList 인터페이스를 구현
 
 
using System;
using System.Collections;
public class SamplesArrayList
{
 
    public static void Main()
    {
        ArrayList onj = new ArrayList();
        onj.Add("Onj");
        onj.Add("OracleJava");
        onj.Add("Community");
 
        Console.WriteLine("onj List");
        Console.WriteLine("    Count:    {0}", onj.Count);
        Console.WriteLine("    Capacity: {0}", onj.Capacity);
 
        Console.Write(" onj  Values:");
        PrintValues(onj);
 
        ArrayList onj2 = (ArrayList)onj.Clone();
        Console.Write(" onj2 Values:");
        PrintValues(onj2);
 
    }
 
    public static void PrintValues(IEnumerable myList)
    {
        foreach (Object obj in myList)
            Console.Write("   {0}", obj);
        Console.WriteLine();
    }
 
}
 
 
 
[결과]
 
onj List
    Count:    3
    Capacity: 4
 onj  Values:   Onj   OracleJava   Community
 onj2 Values:   Onj   OracleJava   Community
 
 
 
2.     System.Collections.Quque
 
큐는 FIFO(First In First Out) 형태의 자료구조를 구현한 클래스로 메시지를 받은 순서대로 저장하는 데 유용하다. System.Collections.Quque 클래스는 큐를 순환 배열로 구현했는데 Queue 에 저장되는 개체들은 한쪽 끝에서 삽입되고 다른 쪽 끝에서 제거된다배열이나 리스트가 데이터에 자유롭게 접근하는 반면 큐는 입력은 오직 뒤(rear), 출력은 오직 앞(front)에서만 일어난다널 값을 허용하고 중복을 허용하는 자료구조 이다.
 
 
using System;
 using System.Collections;
 public class SamplesQueue  {
 
    public static void Main()  {
 
       // Creates and initializes a new Queue.
       Queue myQ = new Queue();
       myQ.Enqueue("Hello");
       myQ.Enqueue("World");
       myQ.Enqueue("!");
 
       // Displays the properties and values of the Queue.
       Console.WriteLine( "myQ" );
       Console.WriteLine( "\tCount:    {0}", myQ.Count );
       Console.Write( "\tValues:" );
       PrintValues( myQ );
    }
 
 
    public static void PrintValues( IEnumerable myCollection )  {
       foreach ( Object obj in myCollection )
          Console.Write( "    {0}", obj );
       Console.WriteLine();
    }
 }
 /*
 This code produces the following output.
 
 myQ
     Count:    3
     Values:    Hello    World    !
*/
 
 
3.     System.Collections.HashTable
 
(key), (value) 쌍으로 된 자료를 다루는 데 용이하다배열과 차이점이라면  배열이 자료에 접근하기 위해 인덱스를 사용하지만 해시테이블은 데이터베이스처럼 키 값을 사용한다는 것이다키 값은 어떤 형식도 가능하며 탐색 속고 또한 좋다. ArrayList에서 데이터 검색을 위해 이진탐색을 수행하거나 리스트를 순회하지만 HashTable은 키를 이용해 데이터를 빠르게 검색한다그러므로 키는 NULL값을 가질 수 없지만 값은 NULL일 수 있다.
 
using System;
using System.Collections;
 
class Example
{
    public static void Main()
    {
 
        Hashtable onj = new Hashtable();
 
        // Add some elements to the hash table. There are no
        // duplicate keys, but some of the values are duplicates.
        onj.Add("name""오엔제이프로그래밍");
        onj.Add("tel""02-851-4790");
        onj.Add("url""www.onjprogramming.co.kr");
        onj.Add("addr""서울 구로 디지털단지");
 
 
        try
        {
            onj.Add("tel""IT 114");
        }
        catch
        {
            Console.WriteLine("키값 중복...");
        }
 
        // The Item property is the default property, so you
        // can omit its name when accessing elements.
        Console.WriteLine("For key = \"name\", value = {0}.", onj["name"]);
 
        onj["name"] = "오라클자바커뮤니티";
        Console.WriteLine("For key = \"name\", value = {0}.", onj["name"]);
 
 
        if (!onj.ContainsKey("who"))
        {
            onj.Add("who""ONJSYSTEMS");
            Console.WriteLine("Value added for key = \"who\": {0}", onj["who"]);
        }
 
        // When you use foreach to enumerate hash table elements,
        // the elements are retrieved as KeyValuePair objects.
        Console.WriteLine();
        foreach (DictionaryEntry d in onj)
        {
            Console.WriteLine("Key = {0}, Value = {1}", d.Key, d.Value);
        }
    }
}
 
 
[결과]
 
키값 중복...
For key = "name", value = 오엔제이프로그래밍.
For key = "name", value = 오라클자바커뮤니티.
Value added for key = "who": ONJSYSTEMS
 
Key = url, Value = www.onjprogramming.co.kr
Key = addr, Value = 서울 구로 디지털단지
Key = tel, Value = 02-851-4790
Key = who, Value = ONJSYSTEMS

댓글 없음:

댓글 쓰기