งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Lecture6 Array List อ. เหมรัศมิ์ วชิรหัตถพงศ์ คณะวิทยาการสารสนเทศ มหาวิทยาลัยบูรพา 1.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Lecture6 Array List อ. เหมรัศมิ์ วชิรหัตถพงศ์ คณะวิทยาการสารสนเทศ มหาวิทยาลัยบูรพา 1."— ใบสำเนางานนำเสนอ:

1 Lecture6 Array List อ. เหมรัศมิ์ วชิรหัตถพงศ์ คณะวิทยาการสารสนเทศ มหาวิทยาลัยบูรพา 1

2 Java collection framework

3 The ArrayList Class  จากปัญหาของ Array ที่กล่าวมานั้นมี ปัญหาในเรื่องของการกำหนดจำนวนข้อมูล ที่ต้องกำหนดไว้ตั้งแต่เริ่มต้น ไม่สามารถ เพิ่มขยายขนาดได้ตอนประมวลผล  การเพิ่ม ลบ ข้อมูลในอาร์เรย์มีข้อจำกัด และเกิดความยุ่งยาก  การ Implement LinkedList เองเพื่อ แก้ปัญ Array จะต้องเขียนโปรแกรม ยุ่งยาก  ใน Java จึงได้จัดเตรียม Class พิเศษที่ใช้ จัดการคล้าย Array แต่มีความยืดหยุ่น เหมือน Linked List เราเรียกว่า ArrayList Class ซึ่งอยู่ใน Standard Library ของ Java

4 The ArrayList Class  การเรียกใช้จะต้อง import java.uril.ArrayList เข้ามาในโปรแกรม  การประกาศตัวแปรเป็นชนิด ArrayList จะ ใช้ –ArrayList Object = new ArrayList (); – โดยที่ หมายถึงชนิดข้อมูล เช่น String, Int เป็นต้น ตัวอย่าง ArrayList StrList = new ArrayList (); ArrayList Dlist = new ArrayList ();

5 Example ArrayList names = new ArrayList (); names.add("Marty Stepp"); names.add("Stuart Reges");

6 ArrayList vs. array การสร้าง Array และ ArrayList String[] names = new String[5]; ArrayList list = new ArrayList (); การกำหนดค่าข้อมูล names[0] = "Jessica"; list.add("Jessica"); การเข้าถึงข้อมูล String s = names[0]; String s = list.get(0);

7 ArrayList vs. array 2 การเข้าถึงข้อมูลและดำเนินการบางอย่างที่ ข้อมูลขั้นต้นด้วย "B" for (int i = 0; i < names.length; i++) { if (names[i].startsWith("B")) {... } } for (int i = 0; i < list.size(); i++) { if (list.get(i).startsWith("B")) {... } } ค้นหาข้อมูลใน List ที่มีข้อมูล "Benson" for (int i = 0; i < names.length; i++) { if (names[i].equals("Benson")) {... } } if (list.contains("Benson")) {... }

8 ArrayList as parameter public static void name (ArrayList name ) { Example: // Removes all plural words from the given list. public static void removePlural( ArrayList list ) { for (int i = 0; i < list.size(); i++) { String str = list.get(i); if (str.endsWith("s")) { list.remove(i); i--; } การส่งค่ากลับเป็น ArrayList : public static ArrayList methodName ( params )

9 ArrayList of primitives? การสร้าง ArrayList จะต้องใช้ object ของ Class มาสร้าง ไม่สามารถกำหนดให้เป็นชนิดข้อมูล พื้นฐานได้ (Primitive Data Type) // illegal -- int cannot be a type parameter ArrayList list = new ArrayList (); แต่สามารถกำหนด ArrayList ให้กับชนิดข้อมูลที่ เป็นชนิดข้อมูลพื้นฐานจะต้องใช้ Class พิเศษ เรียกว่า wrapper classes // creates a list of ints ArrayList list = new ArrayList ();

10 Wrapper classes. ตัวอย่างการสร้าง ArrayList จากชนิดข้อมูล พื้นฐาน ArrayList grades = new ArrayList (); grades.add(3.2); grades.add(2.7);... double myGrade = grades.get(0); Primitive TypeWrapper Type int Integer double Double char Character boolean Boolean

11 ArrayList Method ชื่อ Method ความหมาย add(item) เพิ่มข้อมูลในตำแหน่งท้ายของ Array List add(index,i tem) เพิ่มข้อมูลในตำแหน่งที่ระบุใน index set(index,it em) แทนที่ข้อมูลในตำแหน่งที่ระบุใน index ( เหมือนกับ z[index]=item) get(index) ส่งค่าข้อมูล ณ ตำแหน่งที่ระบุใน index ( เหมือนกับ data = z[index] ) size() ส่งค่าขนาดของ element ใน ArrayList ( เหมือนกับ z.length) remove(ind ex) ลบข้อมูล ณ ตำแหน่งของ index ที่ระบุ ( ส่งค่ากลับ เป็นข้อมูลที่ถูกลบ ) remove(val ue) ลบข้อมูลที่มีค่าเท่ากับ value ( ส่งค่ากลับเป็น true ถ้าสามารถลบได้ และ false ถ้าลบไม่ได้ ) clear() ลบข้อมูลที่ตัวที่อยู่ใน ArrayList

12 ArrayList Method ชื่อ Method ความหมาย contains(it em) ใช้ตรวจสอบว่ามีข้อมูล item ใน Array List หรือไม่ ( ส่งค่ากลับเป็น true ถ้าพบ และส่งค่ากลับเป็น false ถ้าไม่พบ ) indexOf(ite m) ส่งค่ากลับเป็นตำแหน่ง index ของข้อมูล item ใน ArrayList ตำแหน่งแรกที่พบ lastIndexO f(item) ส่งค่ากลับเป็นตำแหน่ง index ของข้อมูล item ใน ArrayList ตำแหน่งสุดท้ายที่พบ isEmpty(lis t) ใช้ตรวจสอบว่า ArrayList ว่างหรือไม่ ( ส่งค่ากลับเป็น true ถ้า ArrayList นั้นว่างและ false ถ้าไม่ว่า )

13 List operations add(x)  true remove(c)  true get(3)  d indexOf(c)  2 contains(b)  true add(3,x)  true remove(1)  b abcd x abc x 0123 d 4 abcd 012 abcd 012 abcd 0123 remove(x)  false abcd 0123 abcd 0123 ? contains(x)  false size()  4 abcd indexOf(x)  -1 c 3 c 4

14 ArrayList words; words = new ArrayList (); words.add(0,"it"); words.add("is"); words.add("a"); words.add("lie"); System.out.println(words); OUTPUT [it, is, a, lie] Method add(item);

15 ArrayList nums; nums = new ArrayList (); nums.add(34); nums.add(0,99); nums.add(21); nums.add(11); System.out.println(nums); OUTPUT [99, 34, 21, 11] Method add(item);

16 ArrayList ray; ray = new ArrayList (); ray.add(23); ray.add(11); ray.set(0,66); ray.add(53); ray.set(1,93); ray.add(22); System.out.println(ray); OUTPUT [66, 93, 53, 22] Method set(index,item);

17 for (int i=0; i

18 ArrayList ray; ray = new ArrayList (); ray.add(23.23); ray.add(11.11); ray.add(12.1); ray.add(65.6); System.out.println(ray. get(0)); System.out.println(ray. get(3)); OUTPUT Method get();.get(index) จะส่งค่ากลับเป็น pointer ที่ชี้ไปยังข้อมูล ในตำแหน่งที่ index

19 ArrayList ray; ray = new ArrayList (); ray.add(23); ray.add(11); ray.add(12); ray.add(65); for(int i=0; i

20 ArrayList ray; ray = new ArrayList (); ray.add(23); ray.add(11); ray.add(12); ray.add(65); for( int val : ray ) System.out.println(val); OUTPUT val จะเก็บค่าข้อมูลในแต่ละตำแหน่งของ ArrayList เมื่อมีการวนลูป การพิมพ์ค่าข้อมูลใน ArrayList

21 ArrayList ray; ray = new ArrayList (); ray.add("a"); ray.add("b"); ray.remove(0); ray.add("c"); ray.add("d"); ray.remove(0); System.out.println(ray); OUTPUT [c, d] Method remove(index);

22 ArrayList ray; ray = new ArrayList (); ray.add("a"); ray.add("b"); ray.remove("a"); ray.add("c"); ray.add("d"); ray.remove("d"); System.out.println(ray); OUTPUT [b, c] Method remove(value);

23 ArrayList ray; ray = new ArrayList (); ray.add("a"); ray.add("x"); ray.contains(“a”);  ส่งค่ากลับเป็น True ray.add("t"); ray.contains("w");  ส่งค่ากลับเป็น false Method contains(value);

24 ArrayList ray; ray = new ArrayList (); ray.add("a"); ray.add("x"); ray.indexOf(“x”);  ส่งค่ากลับเป็น 1 ray.add("t"); ray.indexOf("w");  ส่งค่ากลับเป็น -1 Method indexOf(value);

25 ArrayList ray; ray = new ArrayList (); ray.add("a"); ray.add("x"); ray.add(“x”); ray.lastIndexOf(“x”);  ส่งค่ากลับเป็น 2 ray.add("t"); ray.lastIndexOf(“w");  ส่งค่ากลับเป็น -1 Method lastIndexOf(value);

26 ArrayList ray; ray = new ArrayList (); ArrayList ray1; Ray1 = new ArrayList (); ray.add("a"); ray.add("x"); ray.add(“x”); ray.isEmpty (“x”);  ส่งค่ากลับเป็น false ray1.isEmpty(“w");  ส่งค่ากลับเป็น true Method isEmpty(list);

27 ArrayList ray; ray = new ArrayList (); ray.add("a"); ray.add("x"); ray.clear(); ray.add("t"); ray.add("w"); System.out.println(ray); OUTPUT [t, w] Method clear();

28 การกำหนดค่าเริ่มต้นให้กับ ArrayList? ArrayList names = new ArrayList (); names.add(“Smith”); names.add(“Jones”); จะได้ผลลัพธ์เดียวกับการกำหนดค่า ArrayList ในลักษณะนี้ : ArrayList names = new ArrayList (Arrays.asList("Smith", "Jones")); import java.util.ArrayList; import java.util.Arrays; Method clear();

29 import java.util.*; class arrex1 { public static void main(String args[]) { ArrayList arr = new ArrayList(); // Adding Elements arr.add("A"); arr.add("B"); arr.add(new Integer(10)); arr.add(2,new Integer(10)); arr.add(new Float(10.56f)); arr.add(new Boolean(true)); arr.add(new Double(10.56)); System.out.println(arr); [A, B, 10, 10, 10.56, true, 10.56]

30 // Removing Elements arr.remove("B"); System.out.println(arr); arr.remove(2); System.out.println(arr); arr.set(2,"Object"); arr.set(4,"Java"); System.out.println(arr); } } [A, 10, 10, 10.56, true, 10.56] [A, 10, 10.56, true, 10.56] [A, 10, Object, true, Java] Removes “B” From List Removes element from index 2 from List Sets value for index 2 element as “Object” Sets value for index 4 element as “Java”

31 // Sum of integers Stored in an Unparametrized Arrayslists import java.util.*; class sum { public static void main(String args[]) { ArrayList integers = new ArrayList(10); // Adding Elements integers.add(10); integers.add(-5); integers.add(12); integers.add(-34); integers.add(3,90); integers.add(3,-110); int sum=0; // Forward Traversing Using for loop for(int i=0;i< integers.size();i++) sum = sum + integers.get(i); System.out.println("Sum ="+sum); } } มีที่ผิดคือ ArrayList in use is Unparametrized. While getting/retrieving elements, We have to typecast it to base type beforeuse

32 int sum=0; // Forward Traversing Using for loop for(int i=0;i< integers.size();i++) sum = sum + ((Integer)integers.get(i)).intValue(); System.out.println("Sum ="+sum); การใช้ Type Cast

33 การพิมพ์ข้อมูลจากตำแหน่ง สุดท้าย int sum=0; // Forward Traversing Using for loop for(int i = integers.size()-1; i>=0; i++) sum = sum + ((Integer)integers.get(i)).intValue(); System.out.println("Sum ="+sum);

34 การใช้ iterator(); การใช้ method iterator() ใน Object iterator ประกอบด้วย method 3 ตัว : ◦ next() – เลื่อนตำแหน่งไปยังตำแหน่ง ถัดไป ◦ hasNext() – ตรวจสอบว่าข้อมูลชุด ถัดไปมีข้อมูลหรือไม่ ◦ remove() – ลบข้อมูลในตำแหน่งที่ระบุ

35 การใช้ iterator(); int sum=0; // STEP1 get an iterator for ArrayList Iterator itr = integers. iterator(); while(itr.hasNext()) sum = sum + ((Integer)itr.next()).intValue(); System.out.println("Sum ="+sum); ใช้ได้เฉพาะการเข้าถึงข้อมูลจากตำแหน่ง แรกไปยังตำแหน่งสุดท้าย

36 static void sort(ArrayList names) { for(int i=0;i 0) { String temp = names.get(i); names.set(i,str2); names.set(j,str1); } Sort() Method

37 37 END!


ดาวน์โหลด ppt Lecture6 Array List อ. เหมรัศมิ์ วชิรหัตถพงศ์ คณะวิทยาการสารสนเทศ มหาวิทยาลัยบูรพา 1.

งานนำเสนอที่คล้ายกัน


Ads by Google