The Collections Framework
อาจารย์สมเกียรติ ช่อเหมือน
สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี
(tkorinp@hotmail.com)
The Collections Framework
• An Introduction to Collections
• 2) Collection Interfaces
• 3) Old and New Collections
• 4) Lists
• 5) Sets
• 6) Maps
• 7) Collection Implementations
• 8) Overview of the Collections Framework
• 9) An Example Using Un-typed Collections
• 10) An Example Using Typed Collections
• 11) A Note About Sets
• 12) Summary
An Introduction to Collections
• ระบบซอฟต์แวร์ส่วนใหญ่จำเป็นต้องเก็บกลุ่ม
• อำร์เรย์เป็นวิธีกำรหนึ่งที่ใช้ในกำรจัดเก็บ
• Java สนับสนุนคอลเลกชันที่แตกต่ำงกันมำกขึ้นและมีควำม
ยืดหยุ่นในกำรจัดกลุ่ม คอลเลกชัน (containers) ของ class ใน
แพลตฟอร์ม Java
• เพื่อให้ “Collections Framework” สอดคล้องกับกำรเชื่อมต่อ
และกำรใช้งำน
– อินเตอร์เฟซที่กำหนดฟังก์ชั่นที่มีอยู่
– กำรนำไปใช้งำน และผลกระทบในกำรดำเนินงำน
Collection Interfaces
• แกนหลักของ collections framework เป็นอินเตอร์เฟซที่
เรียกว่ำ “Collection”
• ใช้กำรกำหนด รำยกำรและชุดของอินเตอร์เฟซเพื่อใช้ในกำร
จัดเก็บ
• เพรำะอินเตอร์เฟซเหล่ำนี้ ไม่ใช้ class
• เป็นกำรกำหนดตัวดำเนินกำร(Methods) ที่ไม่ได้ระบุรำยละเอียด
ในกำรดำเนินกำร (ว่ำง)
• อินเตอร์เฟซเพิ่มเติมที่สำคัญคือ ‘Map'
Collection Interfaces
• Collection: ส่วนใหญ่ใช้ในกำรจัดกลุ่ม
– List: รายการของวัตถุ (ซึ่งอาจซ้ากัน)
– Set: รายการของวัตถุ (ซึ่งไม่ซ้ากัน)
– SortedSet: ชุดของวัตถุที่จัดอยู่ในลำดับน้อยไปหำมำก
• Map: รำยกำรที่ไม่ซ้ำกันของ ‘key' ที่ใช้เชื่อมโยงกับวัตถุ
– SortedMap: วัตถุที่จัดเรียงลำดับของคีย์
Old and New Collections
• Java JDK 5.0 'generics' ถูกนำมำใช้
• เรำสำมำรถสร้ำงคอลเลกชันที่มีเพียงกำรจัดเก็บวัตถุของชนิดที่
กำหนด
Lists
• Lists เป็นชนิดที่ใช้กันมำกที่สุดของคอลเลกชัน เป็นวิธีที่สะดวกขึ้น
ในกำรจัดกำรข้อมูล
• โครงสร้ำงข้อมูลแบบรำยกำรมีควำมยืดหยุ่นในกำรปรับขนำดแบบ
อัตโนมัติ
• ไม่จำเป็นต้องเรียงลำดับและซ้ำกันได้
Sets
• Set เป็นเหมือน “กระเป๋ำ” ของวัตถุมำกกว่ำรำยกำร บนพื้นฐำน
ของควำมคิดทำงคณิตศำสตร์
– กำรจัดกลุ่มของสมำชิกที่สำมำรถมีศูนย์หนึ่งหรือหลำยรำยกำรที่
แตกต่ำงกัน โดยไม่สำมำรถระบุตำแหน่ง
Maps
• คน 2 คนอยู่บ้ำนเดียวกัน
• ที่อยู่ซ้ำกันได้
Collection Implementations
• กำรเรียกใช้ interface ของ Class
• Java platform library packages
– ArrayList
• เข้ำถึงรำยกำรได้เร็ว
– LinkedList
• อำจจะเร็วกว่ำ ArrayList ได้เล็กน้อย
– HashSet
• เข้ำถึงได้อย่ำงรวดเร็ว เมื่อมีกำรจัดเรียงลำดับ
– TreeSet
• ช้ำกว่ำ HashSet
– HashMap
• เข้ำถึงได้อย่ำงรวดเร็ว เมื่อมีกำรจัดเรียงลำดับ
– TreeMap
• ช้ำกว่ำ HashMap
• คุณสำมำรถสร้ำงวัตถุจำก ArrayList หรือ LinkedList เพื่อเชื่อมโยงรำยกำรวัตถุ
Overview of the Collections Framework
An Example Using Un-typed Collections
• Iterator เป็น Interface ที่ใช้ในกำรอ้ำงถึงสมำชิกดึงข้อมูลจำก
Collection ประเภท Set ต่ำง ๆ โดยมี method สำคัญ ๆ คือ
hasNext , next และ remove
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
public class ListDemo
{
List mAList;
/**
* Constructor
*/
public ListDemo ()
{
mAList = new ArrayList();
}
public void appendString(String pStr)
{
mAList.add(pStr);
}
public void insertString(int pPos, String pStr)
{
mAList.add(pPos, pStr);
}
public void deleteString(int pPos)
{
mAList.remove(pPos);
}
public void display()
{
String nextItem;
Iterator it = mAList.iterator();
while (it.hasNext())
{
nextItem = (String)it.next();
System.out.print(nextItem + " ");
}
System.out.println();
}
An Example Using Typed Collections
• เหตุผล 2 ข้อที่ทำให้กำรใช้งำนคอลเลกชันง่ำย
• 1) เพรำะรู้ว่ำชนิดของวัตถุจะถูกส่งกลับจำกรำยกำรและไม่จำเป็นต้องใช้ตัวดำเนินกำร
• 2) เพรำะ Java 5.0 มีกำรวน Loop ในคอลเลกชันที่ต้องกำรแสดงผล
• Generic Types
import java.util.List;
import java.util.ArrayList;
public class ListDemo {
private List<String> mAList;
public ListDemo ()
{
mAList = new ArrayList<String>();
}
public void display()
{
for (String nextItem : mAList)
{
System.out.print(nextItem + " ");
}
System.out.println();
} }
Summary
• กำรจัดกำรกลุ่มของวัตถุในภำษำ Java นิยมใช้ Collections
Framework เพื่อให้ง่ำยต่อกำรจัดกำรประเภทของวัตถุทั้งที่
เหมือน หรือต่ำงกันได้
• โดย Collections Framework แบ่งออกเป็น 3 กลุ่มหลัก คือ
Set List และ Hash
– Set กลุ่มไม่จัดลำดับ
– List รำยกำรตำมลำดับ
– Hash ใช้ตัวชี้ไปยังส่วนที่เก็บ
• ทำให้สำมำรถเขียนโปรแกรมเชิงวัตถุในกำรจัดเก็บชุดของวัตถุได้

The Collections Framework

  • 1.
    The Collections Framework อาจารย์สมเกียรติช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี (tkorinp@hotmail.com)
  • 2.
    The Collections Framework •An Introduction to Collections • 2) Collection Interfaces • 3) Old and New Collections • 4) Lists • 5) Sets • 6) Maps • 7) Collection Implementations • 8) Overview of the Collections Framework • 9) An Example Using Un-typed Collections • 10) An Example Using Typed Collections • 11) A Note About Sets • 12) Summary
  • 3.
    An Introduction toCollections • ระบบซอฟต์แวร์ส่วนใหญ่จำเป็นต้องเก็บกลุ่ม • อำร์เรย์เป็นวิธีกำรหนึ่งที่ใช้ในกำรจัดเก็บ • Java สนับสนุนคอลเลกชันที่แตกต่ำงกันมำกขึ้นและมีควำม ยืดหยุ่นในกำรจัดกลุ่ม คอลเลกชัน (containers) ของ class ใน แพลตฟอร์ม Java • เพื่อให้ “Collections Framework” สอดคล้องกับกำรเชื่อมต่อ และกำรใช้งำน – อินเตอร์เฟซที่กำหนดฟังก์ชั่นที่มีอยู่ – กำรนำไปใช้งำน และผลกระทบในกำรดำเนินงำน
  • 4.
    Collection Interfaces • แกนหลักของcollections framework เป็นอินเตอร์เฟซที่ เรียกว่ำ “Collection” • ใช้กำรกำหนด รำยกำรและชุดของอินเตอร์เฟซเพื่อใช้ในกำร จัดเก็บ • เพรำะอินเตอร์เฟซเหล่ำนี้ ไม่ใช้ class • เป็นกำรกำหนดตัวดำเนินกำร(Methods) ที่ไม่ได้ระบุรำยละเอียด ในกำรดำเนินกำร (ว่ำง) • อินเตอร์เฟซเพิ่มเติมที่สำคัญคือ ‘Map'
  • 5.
    Collection Interfaces • Collection:ส่วนใหญ่ใช้ในกำรจัดกลุ่ม – List: รายการของวัตถุ (ซึ่งอาจซ้ากัน) – Set: รายการของวัตถุ (ซึ่งไม่ซ้ากัน) – SortedSet: ชุดของวัตถุที่จัดอยู่ในลำดับน้อยไปหำมำก • Map: รำยกำรที่ไม่ซ้ำกันของ ‘key' ที่ใช้เชื่อมโยงกับวัตถุ – SortedMap: วัตถุที่จัดเรียงลำดับของคีย์
  • 6.
    Old and NewCollections • Java JDK 5.0 'generics' ถูกนำมำใช้ • เรำสำมำรถสร้ำงคอลเลกชันที่มีเพียงกำรจัดเก็บวัตถุของชนิดที่ กำหนด
  • 7.
    Lists • Lists เป็นชนิดที่ใช้กันมำกที่สุดของคอลเลกชันเป็นวิธีที่สะดวกขึ้น ในกำรจัดกำรข้อมูล • โครงสร้ำงข้อมูลแบบรำยกำรมีควำมยืดหยุ่นในกำรปรับขนำดแบบ อัตโนมัติ • ไม่จำเป็นต้องเรียงลำดับและซ้ำกันได้
  • 8.
    Sets • Set เป็นเหมือน“กระเป๋ำ” ของวัตถุมำกกว่ำรำยกำร บนพื้นฐำน ของควำมคิดทำงคณิตศำสตร์ – กำรจัดกลุ่มของสมำชิกที่สำมำรถมีศูนย์หนึ่งหรือหลำยรำยกำรที่ แตกต่ำงกัน โดยไม่สำมำรถระบุตำแหน่ง
  • 9.
    Maps • คน 2คนอยู่บ้ำนเดียวกัน • ที่อยู่ซ้ำกันได้
  • 10.
    Collection Implementations • กำรเรียกใช้interface ของ Class • Java platform library packages – ArrayList • เข้ำถึงรำยกำรได้เร็ว – LinkedList • อำจจะเร็วกว่ำ ArrayList ได้เล็กน้อย – HashSet • เข้ำถึงได้อย่ำงรวดเร็ว เมื่อมีกำรจัดเรียงลำดับ – TreeSet • ช้ำกว่ำ HashSet – HashMap • เข้ำถึงได้อย่ำงรวดเร็ว เมื่อมีกำรจัดเรียงลำดับ – TreeMap • ช้ำกว่ำ HashMap • คุณสำมำรถสร้ำงวัตถุจำก ArrayList หรือ LinkedList เพื่อเชื่อมโยงรำยกำรวัตถุ
  • 11.
    Overview of theCollections Framework
  • 12.
    An Example UsingUn-typed Collections • Iterator เป็น Interface ที่ใช้ในกำรอ้ำงถึงสมำชิกดึงข้อมูลจำก Collection ประเภท Set ต่ำง ๆ โดยมี method สำคัญ ๆ คือ hasNext , next และ remove import java.util.List; import java.util.ArrayList; import java.util.Iterator; public class ListDemo { List mAList; /** * Constructor */ public ListDemo () { mAList = new ArrayList(); } public void appendString(String pStr) { mAList.add(pStr); } public void insertString(int pPos, String pStr) { mAList.add(pPos, pStr); } public void deleteString(int pPos) { mAList.remove(pPos); } public void display() { String nextItem; Iterator it = mAList.iterator(); while (it.hasNext()) { nextItem = (String)it.next(); System.out.print(nextItem + " "); } System.out.println(); }
  • 13.
    An Example UsingTyped Collections • เหตุผล 2 ข้อที่ทำให้กำรใช้งำนคอลเลกชันง่ำย • 1) เพรำะรู้ว่ำชนิดของวัตถุจะถูกส่งกลับจำกรำยกำรและไม่จำเป็นต้องใช้ตัวดำเนินกำร • 2) เพรำะ Java 5.0 มีกำรวน Loop ในคอลเลกชันที่ต้องกำรแสดงผล • Generic Types import java.util.List; import java.util.ArrayList; public class ListDemo { private List<String> mAList; public ListDemo () { mAList = new ArrayList<String>(); } public void display() { for (String nextItem : mAList) { System.out.print(nextItem + " "); } System.out.println(); } }
  • 14.
    Summary • กำรจัดกำรกลุ่มของวัตถุในภำษำ Javaนิยมใช้ Collections Framework เพื่อให้ง่ำยต่อกำรจัดกำรประเภทของวัตถุทั้งที่ เหมือน หรือต่ำงกันได้ • โดย Collections Framework แบ่งออกเป็น 3 กลุ่มหลัก คือ Set List และ Hash – Set กลุ่มไม่จัดลำดับ – List รำยกำรตำมลำดับ – Hash ใช้ตัวชี้ไปยังส่วนที่เก็บ • ทำให้สำมำรถเขียนโปรแกรมเชิงวัตถุในกำรจัดเก็บชุดของวัตถุได้