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 – 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 ใช้ตัวชี้ไปยังส่วนที่เก็บ ทำให้สามารถเขียนโปรแกรมเชิงวัตถุในการจัดเก็บชุดของวัตถุได้