Java ArrayList Object example
Aagkasit Tontan
ArrayList เป็นอีกทางเลือกหนึ่งที่เราไม่ทราบ ขนาด Array ที่แน่นอน และช่วยให้เราสามารถเก็บข้อมูลเป็น object ได้
Method ของ ArrayList ที่จะใช้- add() : สำหรับเพิ่มข้อมูลให้ลงใน ArrayList
- get() : สำหรับดึงค่าใน ArrayList
- set() : สำหรับเปลี่ยนแปลงตำแหน่งข้อมูลใน ArrayList
วันนี้จะเราจะทำโจทย์ที่นำ ArrayList มาประยุกต์ใช้งานกัน
โจทย์ คือ จะให้ไฟล์ students.in ภายในไฟล์จะเป็นข้อมูลนักศึกษามาโดยมี รหัสนักศึกษา ชื่อนักศึกษา คะแนนที่ได้ อยากให้เรียงลำดับคะแนน นักศึกษาจาก มากไปหาน้อย
Student_Id,Student_name,Student_score 53001,Theerapong Hunghuan,50 53002,Vatcharin Phoya,35 53003,Prapakorn Moonnoi,38 53004,Agkasit Tontan,56 53005,Wattanakron Apichit,35 53006,Tanachai Sunarug,68 53007,Chanwit Phuwadkien,66 53008,Wkt Rescue,55 53009,Scream Srisawet,73 53010,Tanachai Sunarug,33 53011,Leng ManDer,46 53012,CupidNoy Sky InNocence,67
- ให้อ่านข้อมูลจากไฟล์ students.in เข้ามาเก็บใน Arraylist โดยสร้างคลาส Students สำหรับเก็บค่า studentId ,studentName,studentGate หรือจะมองเป็นหนึ่ง object แล้วมา add ใน Arraylist
- นำข้อมูลนักศึกษาทั้งหมดมาเรียงจากมากไปหาน้อย การเรียงข้อมูลจากมากไปหาน้อย โดยดึงเฉพาะ sutudentScore มาเปรียบเทียบ แล้วใช้ Method set ของ ArrayList ในการสลับตำแหน่ง
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; public class ArrayListExample { private static String studentId; private static String studentName; private static int studentScore; public static void main(String[] args) throws IOException { BufferedReader readfile = new BufferedReader(new FileReader(new File( "C:/students.in"))); String tmp; readfile.readLine();// ไม่เก็บ Student_Id,Student_name,Student_score ArrayListรันดูstudentList = new ArrayList (); // เก็บข้อมูลนักศึกษาให้ครบ while ((tmp = readfile.readLine()) != null) { String[] arr = tmp.split(","); studentId = arr[0]; studentName = arr[1]; studentScore = Integer.parseInt(arr[2]); // add ข้อมูลนักศึกษา studentId,studentName,studentGate ใส่ // studentList studentList.add(new students(studentId, studentName, studentScore)); } // show ข้อมูล ดู for (int i = 0; i < studentList.size(); i++) { System.out.println(studentList.get(i).studentId + " " + studentList.get(i).studentName + " " + studentList.get(i).studentScore); } } } // สร้าง class students เพี่อเก็บ studentId ,studentName,studentGate static class students { public String studentId; public String studentName; public int studentScore; students(String studentId, String studentName, int studentScore) { this.studentId = studentId; this.studentName = studentName; this.studentScore = studentScore; } }
ขั้นตอนทึ่ 2 ใช้การเรียงข้อมูลแบบ Bubble Sort ในการเรียงข้อมูล
// Method สำหรับเรืยง ลำดับ score จาก มาก ->น้อย static ArrayListโค้ดทั้งหมดsort(ArrayList List) { students tmp; for (int i = 1; i < List.size(); i++) { for (int j = 0; j < List.size() - i; j++) { if (List.get(j).studentScore < List.get(j + 1).studentScore) { tmp = List.get(j); List.set(j, List.get(j + 1)); List.set(j + 1, tmp); } } } return List; }
เนื้อหาที่เกียวข้อง / ควรศึกษาเพิ่มเติมถ้าไม่เข้าใจ
- Class และ object คืออะไร (http://javaagkasit.blogspot.com/2012/09/class-object.html#.UTds1tapr2s)
- การใช้งาน constructor (http://javaagkasit.blogspot.com/2012/09/constructor.html#.UTdrRtapr2s)
- การใช้งาร for-loop(http://javaagkasit.blogspot.com/2012/08/for.html#.UTdrTdapr2s)
- การใช้งาน while-loop(http://javaagkasit.blogspot.com/2012/09/while-loop.html#.UTdrSNapr2s)
- การใช้งาน if-else(http://javaagkasit.blogspot.com/2012/08/if-else.html#.UTdrVNapr2s)
- class Arraylist (http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html)
23:42:00
Java basic
,
Java basic [OOP]
,
มีไฟล์
การสร้างโปรเจกใน NetBeans IDE
Aagkasit Tontan
สำหรับคนที่หัดเขียน Java เป็นครังแรกนะครับ วันนี้เรามาพาสร้างโปรเจกใน NetBeans IDE ไม่พูดร่ำทำเพลง มาเริ่มกันเลย ขั้นแรกก็ new project
พอคลิก New Project ก็จะแสดงหน้าต่างให้เรา ตั้งชื่อโปรเจก ในที่นี้ ตั้งชื่อเป็น InceptionWatchQ
![]() |
ตั้งชื่อโปรเจกตามรูป หรือตั้งตามใจเลยก็ได้ครับ |
ให้เราทำการ คลิกขวาที่ default package แล้วก็ new > Java Class
พอได้แล้วก็ ตั้งชื่อให้เหมือนกันกับชื้อโปรเจก ดังรูป แล้วก็กด finish
พอกดเสร็จ มันก็จะเจนค่าให้ดังรูป
ทีนี้ก็ได้ Class InceptionWatch มาแล้ว ซึ่งตอนนี้ยังไม่สามารถ run โปรเจกได้เนืองจากยังไม่มี Mathode main ให้เราพิมพ์
public static void main (String [] args){
}
23:16:00
Java basic
,
ไม่มีไฟล์
[Java OOP]Class และ Object คืออะไร
Aagkasit Tontan
วันนี้มารู้จัก Class และ Object กัน ซึ่งในหัวข้อนี้มันจะเกี่ยวข้องกับเรื่อง Object-oriented programming โดยเรามาฝึกมองสิ่งที่ต่างๆเป็นวัตถุ ก่อนจะเข้าเรื่องผมขอบอกเลยว่าถ้าเข้าใจเรื่องนี้จะสามารถนำความรู้ไปประยุกต์ใช้ได้อย่างมากมายและอาจจะช่วยให้เขียนโปรแกรมได้ง่ายขึ้นอีกด้วยในบ้างกรณี
class คือ คุณลักษณะ หรือคุณสมบัติของวัตถุใดวัตถุหนึ่ง หรื่อจะง่ายๆคือเป็นตัวกำหนดคุณสมบัติได้ถูกสร้างขึ้น จะขอยกตัวอย่าง class Dog สุนัขก็จะมีคุณสมบัติ เช่น ชื่อ พันธฺุ์ และอื่นขึ้นอยู่กับคุณสมบัติของสิ่งที่เราสร้าง
หลักการเขียน class จะมีองค์ประกอบอยู่ 3 ส่วนด้วยกัน
สรุป Class และ Object
class คือ คุณลักษณะ หรือคุณสมบัติของวัตถุใดวัตถุหนึ่ง หรื่อจะง่ายๆคือเป็นตัวกำหนดคุณสมบัติได้ถูกสร้างขึ้น จะขอยกตัวอย่าง class Dog สุนัขก็จะมีคุณสมบัติ เช่น ชื่อ พันธฺุ์ และอื่นขึ้นอยู่กับคุณสมบัติของสิ่งที่เราสร้าง
หลักการเขียน class จะมีองค์ประกอบอยู่ 3 ส่วนด้วยกัน
- คุณสมบัติ(Field) คือ ตัวแปรที่เราจะสร้างให้กับคุณสมบัติ
- คอนทรักเจอร์(Constructor) คือ เป็นกำหนดการรูปแบบการเรียกใช้ Class
- เมทธอต(Method) คือ ฟังชั่นก์ หรือ เหตุการณ์ เช่น การตั้งชื่อให้กับสนัข การกำหนดสายพันธุ์ หรือ จะใส่เหตุการณ์ต่างๆก็ได้เช่น การกิน นอน เดินเล่น เห่า เป็นต้น
ให้เรานึกถึงความเป็นจริงในชีวิตของเราว่าสนัขควรมีคุณสมบัติอะไรบ้าง ในที่นี่จะให้สุนัขมีคุณสมบัติ คือ มีชื่อ มีสายพันธฺุ์ มีเมทธอต คือ ตั้งชื่อสุนัขได้ กำหนดสายพันธฺุ์ได้ และสามารถเรียกดู ชื่อ กับ สายพันธุ์ ได้ด้วย
/* * @author http://javaagkasit.blogspot.com */ public class Dog { //กำหนดคุณสมบัติ(Field) String Name; String Breed; //คอนทรักเจอร์(Constructor) Dog(){ } // เมทธอต สำหรับ กำหนดชื่อสุนัข public void setName(String name){ Name = name; } // เมทธอต สำหรับ กำหนดสายพันธุ์ public void setBreed(String breed){ Breed = breed; } // เมทธอต สำหรับไว้ให้เรียกดูชื่อสุนัข public String getName(){ return Name; } // เมทธอต สำหรับไว้ให้เรียกดูสายพันธุ์สุนัข public String getBreed(){ return Breed; } }เมื่อสร้างคลาสเสร็จ เรามาลองเรียกใช้งานคลาส Dog เราจะได้ทราบว่า Object มันคืออะไรกันแน่
/** *class สำหรับ ทดสอบ class Dog * @author http://javaagkasit.blogspot.com */ public class TestDog { public static void main(String [] args){ Dog d = new Dog(); //สุนักตัวที่ 1 d.setName("มี่มี้"); // ตั้วชื่อว่า มี่มี้ d.setBreed("ชิวาวา"); // สุนักพันธุ์ ชิวาวา Dog d2 = new Dog(); //สุนักตัวที่ 2 d2.setName("ก้าน"); // ตั้วชื่อว่า ก้าน d2.setBreed("บางแก้ว"); // หมาพันธุ์ บางแก้ว System.out.println("สุนักตัวที่ 1"); System.out.println(" ชื่อ :"+d.getName()); System.out.println("พันธุ์ :"+d.getBreed()); System.out.println("สุนักตัวที่ 2"); System.out.println(" ชื่อ :"+d2.getName()); System.out.println("พันธุ์ :"+d2.getBreed()); } }
เวลาเราจะเรียกใช้ class Dog ก็จะทำการ Dog d = new Dog(); ตัว d นั้นล่ะเค้าเรียก Object ซึ่งออปเจกนี้จะมีคุณสมบัติเหมือนกับที่เรากำหนดไว้ใน class Dog ทุกประการ ในหนึ่งออปเราจะมองให้เป็นวัตถุอย่าง ซึ่ง ออปเจก d ที่เราได้ new เราจะมองเป็นสนุกหนึ่งต้ว
Dog d = new Dog(); //สุนักตัวที่ 1 d.setName("มี่มี้"); // ตั้วชื่อว่า มี่มี้ d.setBreed("ชิวาวา"); // สุนักพันธุ์ ชิวาวา
เป็นการสร้าง ออปเจก สุนัข มาหนึ่งตัว แล้วก็ตั้งชื่อให้มัน โดยการ d.setName("มี่มี้"); แล้วก็ระบุสายพันธุ์ให้มันโดยการ d.setBreed("ชิวาวา"); จะเห็นว่าการที่จะเรียกใช้เมทธอตใน class Dog ได้โดยการใช้ "." พอเรากำหนดชื่อ สายพันธุ์ อยากจะแสดงรายของสุนัขตัวนี้( ออปเจก d)ก็ทำได้ไดย
System.out.println("สุนักตัวที่ 1"); System.out.println(" ชื่อ :"+d.getName()); System.out.println("พันธุ์ :"+d.getBreed());
ผลการรันโปรแกรม
สรุป Class และ Object
Class เป็นการกำหนดคุณสมบัติของวัตถุสิ่งใดสิ่งหนึ่ง และObject ก็เป็นการเรียกใช้ Class นั้นๆโดยที่ object นั้นๆจะมีคุณสมบัติเหมือนกับ class ที่เรียกใช้ทุกประการ
เรื่องที่ควรศึกษาเพิ่มเติม - การใช้งาน Constructor
02:40:00
Java basic [OOP]
,
มีไฟล์
[Java]การใช้ while loop
Aagkasit Tontan
คำสั่ง while loop เป็นคำสั่งสำหรับวนลูปอีกแบบจะมีเงื่อนไขการทำงานอยู่ว่า ถ้าเงื่อนไขเป็นจริงทำงานต่อไปเรื่อยๆและจะออกจากลูปเมื่อเงื่อนไขเป็นเท็จ
/**
* โปรแกรมนับเลข 1 - 10
* @author http://javaagkasit.blogspot.com
*/
public class whileloop {
public static void main(String[] args) {
int count = 1 ;
while (true) {
if(count <= 10){
System.out.println(count++);
}else{
break;
}
}
}
}
จากโค้ดด้านบนเป็นโปรแกรมนับเลข 1 ถึง 10 การทำงานก็คือว่า ในลูป while จะวนไปเรื่อยๆภายใน{}ของ while ถ้า count น้อยกว่าหรือเท่า 10 ก็จะปริํนค่า count ออกมาพร้อมทั้งเพิ่มค่า count ขึ้นที่ละหนึ่ง เมื่อใดที่ค่า count มีค่าไม่ได้อยู่ในเงื่อนไข ก็จะออกจากลูป while
ในการใช้คำสั้งวนใดๆก็ตาม จะมี 2 คำสั้งที่เกี่ยวข้อ คือ break กับ continue การใช้งานก็ง่ายนิดเดียว break คือ ออกจากลูป ส่วน continue คือทำงานต่อไป ซึ่งการใช้งานจริงส่วนใหญ่ก็เป็น break ซะมากกว่า continue
ศึกษาเพิ่มได้ที่
- การใช้ if else http://javaagkasit.blogspot.com/2012/08/if-else.html
- การสร้างโปรเจกใน NetBeans IDEhttp://javaagkasit.blogspot.com/2012/09/netbeans-ide.html
- Class และ object คืออะไร
22:56:00
Java basic
,
ไม่มีไฟล์
[Java]การใช้ for-each
Aagkasit Tontan
นอกเหนือจากการใช้ For loop แบบมี ค่าเริ่ม;เงื่อนไข;เพิ่มค่า ยังมีการวนลูปอีกแบบหนึ่งในภาษา Java คือ for - each loop โดยมีรูปแบบคำสั่งดังนี้
for(declaration : expression) {
statement
}
- declaration : เป็นการประกาศตัวแปรทั่วไป เช่น String color
- expression : จะเป็นอาร์เรย์ (array) หรือ Object
- statement : อาจจะเป็น การคำนวน การแสดงค่า(print)
แล้วมันต่างจาก for ธรรมดาอย่างไร ข้อดีของ for-each คือกรณีที่เราต้องการโชว์ข้อมูลใน Array ทั้งหมด for -each จะทำได้ง่ายกว่า อาจจะมองภาพยังไม่ออกลองดูตัวอย่างโค้ดด้านล่าง
/*
* การใช้งาน foreach
* @author http://javaagkasit.blogspot.com/
*/
public class foreach {
public static void main(String [] args){
String [] colors = {"Red","Blue","Pink","Yellow","Orange"};
//for ธรรมดา
for(int i =0 ; i< colors.length ;i++){
System.out.println(colors[i]);
}
//for -each
for(String c : colors){
System.out.println(c);
}
}
}
จากโค้ดด้านบน จะเห็นได้ว่าการใช้ for-each จะทำได้ง่ายและเร็วกว่าการใช้ for ธรรมดา แต่ในทางกลับกันในความสะดวกสะบายของ for - each ยังมีข้อเสียอยู่ ในกรณี ถ้าเราต้องการแสดงเฉพาะตำแหน่งเราต้องการโชว์ เช่น โชว์เฉพาะตำแหน่ง colors[0] จะทำไม่ได้
เนื่้อหาที่เกี่ยวข้อง
- การใช้ for http://javaagkasit.blogspot.com/2012/08/for.html
- การใช้ switch casehttp://javaagkasit.blogspot.com/2012/08/switch-case.html
- การใช้ if else http://javaagkasit.blogspot.com/2012/08/if-else.html
- การใช้ if else if http://javaagkasit.blogspot.com/2012/08/if-else-if.html
21:55:00
Java basic
,
ไม่มีไฟล์
Subscribe to:
Posts
(
Atom
)