Category Archives: TutorialJava

Set Collection

Set
Lưu các phần tử thuộc nhiều kiểu dữ liệu khác nhau nhưng phần tử không được lưu trữ theo chỉ số
Không chứa các phần tử trùng nhau ( nếu mà trùng thì nó sẽ bị xóa)
-Khác biệt List vs Set ( list có thể chứa các phần tử giống nhau còn set thì không)
HashSet các phần tử thêm vào không được trùng nhau (thứ tự là ngẫu nhiên bị thay đổi)
LinkedHashSet các phần tử thêm vào không được trùng nhau( thứ tự giống như với thứ tự được thêm vào)
TreeSet các phần tử không được trùng nhau ( thứ tự thêm vào được sắp xếp theo thứ tự tăng dần)

public class SetInterface {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		linkedHashSet();
		hashSet();
		treeSet();
	}

	private static void linkedHashSet() {
		// TODO Auto-generated method stub
		LinkedHashSet lk= new LinkedHashSet<>();
		lk.add(8);
		lk.add(12);
		lk.add("java");
		Iterator it= lk.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
		
	}

	private static void hashSet() {
		// TODO Auto-generated method stub
		HashSet lk= new HashSet<>();
		lk.add(8);
		lk.add(12);
		lk.add("java");
		Iterator it= lk.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}

	private static void treeSet() {
		// TODO Auto-generated method stub
		TreeSet lk= new TreeSet();
		lk.add(8);
		lk.add(12);
		lk.add(55);
		lk.add(23);
		Iterator it= lk.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}

}

OUTPUT

linkedHashSet
8
12
java
HashSet
java
8
12
TreeSet output sorted
8
12
23
55

Learn ArrayList Collection

sử dụng mảng động để lưu các phần tử nhiều kiểu dữ liệu khác nhau( giá trị có thể trùng nhau, thứ tự thêm cũng là thứ tự arraylist)
duyệt thông qua for và iterator

public class List {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		arrayList();
		arrayListCallFunction();
	}
	// call function with object
	public static void arrayListCallFunction(){
		// lay danh sach Course , luu vao mang , xong add danh sach vao trong mang
		ArrayList<Course> listCourse= new ArrayList<Course>();
		
		Course course2= new Course();
		course2.setName("Java");
		listCourse.add(course2);
		
		Course course1= new Course();
		course1.setName("Android");
		listCourse.add(course1);
		
		Iterator iter= listCourse.iterator();
		while(iter.hasNext()) {
			Object obj= iter.next();
			if(obj instanceof Course) { // kiem tra doi tuong obj co phai la kieu Course khong
				Course cs =(Course)obj; // downCasting ( kieu lop con tham chieu den doi tuong lop cha)
				System.out.println(cs.getNameCourse());
			}
			System.out.println("list course "+iter.next());
		}
		
	}
	
	public static void arrayList() {
		ArrayList listObj= new ArrayList();
		Course course= new Course("Android", 250);
		listObj.add("java ");
		listObj.add(12);
		listObj.add(12.4);
		listObj.add(true);
		listObj.add(course);
		
		
//		System.out.println("tong size " +  listObj.size()); // get the array length 
//		listObj.set(0, "Android + Java");  // set for the first element 
//		System.out.println(listObj.get(0)); // get first index
//		System.out.println(listObj.get(listObj.size()-1)); //get last index
		// get lists directly that lack safety
		// print all element 
		for(int i = 0; i< listObj.size(); i ++) {
			System.out.println(listObj.get(i));
		}
		//the way implement 2
		// print all element with object
		for(Object obj: listObj) {
			System.out.println(obj);
		}
		// get list is safety but speed slow
		// the way implement 3
		Iterator iter= listObj.iterator();
		while(iter.hasNext()) {
			System.out.println(iter.next());
		}
		// remove implement 
		listObj.remove(0);
		// remove all implement 
		listObj.clear();
		// check list is empty
		if(!listObj.isEmpty()) {
			Iterator iter2= listObj.iterator();
			while(iter2.hasNext()) {
				System.out.println(iter2.next());
			}
		}else {
			System.out.println("list is empty");
		}
		
	
	}

}

Class Course 

public class Course {
	private String nameCourse;
	private int time;
	public Course() {
		
	}
	public Course(String name, int time) {
		super();
		this.nameCourse = name;
		this.time = time;
	}
	@Override
	public String toString() {
		return "Course [name=" + nameCourse + ", time=" + time + "]";
	}
	public String getNameCourse() {
		return nameCourse;
	}
	public void setName(String name) {
		this.nameCourse = name;
	}
	public int getTime() {
		return time;
	}
	public void setTime(int time) {
		this.time = time;
	}
}

Collection Và Cách Sử Dụng

SỬ DỤNG ARRAYLIST.

import  java.util.*;

 class ArrayListDemo01{

          public ArrayListDemo01(){

                   ArrayList arr=new ArrayList(); à khởi tọa arraylist

                   // dua obj vao arr

                   arr.add(“Ha noi”);

                   arr.add(“Ha noi1”);

                   arr.add(“Ha noi1”);

                   arr.add(“Ha noi2”);

                   // lay ra

  • lay ra truc tiep,mà thiếu sự an toàn

                   for (int i = 0; i<arr.size(); i++){

                             System.out.println (“data=”+ arr.get(i));

                             }

          à Cách lấy bằng iterater, lấy an toàn.. mà tốc độ xử lý chậm

                   System.out.println (“++++++++++”);

                   Iterator it=arr.iterator();

                   while(it.hasNext()){

                             System.out.println (“data=”+ it.next());

                             }

                   }

Kiểu ArrayListgọi hàm..

class ArrayListDemo02{

          public ArrayListDemo02(){

àlấy danh sách lớp student.. lưu vào mảng..  xong add danh sách.. vào trong mảng

ArrayList<Student> arr=new ArrayList<Student>();

                   Student st1=new Student();

                   st1.setName(“Tran Van A”);

                   arr.add(st1);

                   Student st2=new Student();

                   st2.setName(“Tran Van B”);

                   arr.add(st2);

                   //

                   Iterator it=arr.iterator();

                   while(it.hasNext()){

                             Object obj=it.next();

                             if(obj instanceof Student){

                                      Student st=(Student)obj;

                                      System.out.println (“name=”+ st.getName());

                                      }

                             }

                   }

          public static void main(String[] a){

                             new ArrayListDemo02();

                   }       

          }

  • khơi tạo.. lớp student

           class Student{

                    private String name;

                    public void setName(String name){

                             this.name=name;

                             }

                    public String getName(){

                             return this.name;

                             }       

  @CÁCH SỮ DỤNG LẤY NGÀY THÁNG NĂMHIỆN TẠI@@

CODE:

import  java.util.*;

import java.text.*;  àthay doi dinh dang ngay thang

class DateDemo{

          public DateDemo(){

                   Date dt=new Date();

                   System.out.println (“Thoi gian hien tai =”+ dt);

                   System.out.println (“+++++++++++++++++”);

                   System.out.println (“Thoi gian hien tai  =”+ ngayThang(dt));

                   System.out.println (“++++++++++++++”);

                   CalenderDemo();

                   }

  • lấy ngày tháng năm hiện tại. có 2 cách. SimpleDateFormat, Calender

          public String ngayThang(Date dt){

SimpleDateFormat f=new SimpleDateFormat(“dd/MM/yyyy hh:mm:ss”);

                   return f.format(dt).toString();

                   }       

  • Chặt chém ngày tháng năm..

          public void CalenderDemo(){

                   Calendar ca=Calendar.getInstance();

                   System.out.println (“Hom nay la ngay : “+ ca.get(Calendar.DATE));

                   System.out.println (“DAY_OF_MONTH : “+ ca.get(Calendar.DAY_OF_MONTH));

                   System.out.println (“Hom nay la ngay : “+ ca.get(Calendar.DAY_OF_WEEK_IN_MONTH));

                   }       

  • Hàm chạy

                   public static void main(String[] a){

                                       new DateDemo();

                             }       

          }

@@@ SỬ DỤNG LINKLIST

import  java.util.*;

 class LinkedListDemo{

          public LinkedListDemo(){

                   LinkedList arr=new LinkedList();

                   // dua obj vao arr

                   arr.add(“Ha noi”);

                   arr.add(“Ha noi1”);

                   arr.add(“Ha noi1”);

                   arr.add(“Ha noi2”);

                   // lay ra

                   // lay ra truc tiep

                   for (int i = 0; i<arr.size(); i++){

                             System.out.println (“data=”+ arr.get(i));

                             }

                   // an toan

                   System.out.println (“++++++++++”);

                   Iterator it=arr.iterator();

                   while(it.hasNext()){

                             System.out.println (“data=”+ it.next());

                             }

                   }

                   public static void main(String[] a){

                                                new LinkedListDemo();

                                      }       

          }

@@ SỬ DỤNGVECTOR

class VectorDemo{

          public VectorDemo(){

                   Vector vt=new Vector();

                   vt.addElement(“Ha noi”);

                   vt.addElement(“Ha noi”);

                   vt.addElement(“Ha noi”);

                   vt.addElement(“Ha noi”);

                   for (int i = 0; i<vt.size(); i++){

                             System.out.println (“data=”+ vt.elementAt(i));

                             }

                   }

                   public static void main(String[] a){

                                       new VectorDemo();

                             }       

          }

@@ SỬ DỤNG HASHSET

class HashSetDemo{

          public HashSetDemo(){

                   Set hash=new HashSet();

                   hash.add(“2”);

                   hash.add(“1”);

                   hash.add(“3”);

                   System.out.println (“data=”+ hash);

                    Iterator it=hash.iterator();

                    while(it.hasNext()){

                             System.out.println (“data=”+ it.next());

                             }

                   }

                   public static void main(String[] a){

                                       new HashSetDemo();

                             }       

          }

@@ SỬ DỤNG TREESET

  • Dùng để lọc nhưng giá trị trùng trong mảng..

class TreeSetDemo{

          public TreeSetDemo(){

                   SortedSet tree=new TreeSet();

                   tree.add(“1”);

                   tree.add(“3”);

                   tree.add(“2”);

                   tree.add(“1”);

                   tree.add(“1”);

                   Iterator it=tree.iterator();

                   while(it.hasNext()){

                             System.out.println (“data=”+ it.next());

                             }

                   }

                   public static void main(String[] a){

                                       new TreeSetDemo();

                             }       

          }

@@SỮ DỤNG QUEUE

class QueueDemo{

          public QueueDemo(){

                   Queue q=new LinkedList();

                   offerQ(q,”sms1″);

                   offerQ(q,”sms2″);

                   offerQ(q,”sms3″);

                   takeQ(q);

                   takeQ(q);

                   takeQ(q);

                   }

                   public static void main(String[] a){

                                       new QueueDemo();

                             }       

          public void offerQ(Queue q, String sms){

                   q.offer(sms);

                   }       

          public void takeQ(Queue q){

                   System.out.println (“data=”+ q.poll());

                   }       

          }

@@SỬ DỤNG STACK

class StackDemo{

          public StackDemo(){

                   Stack st=new Stack();

                   pushStack(st, “sms1”);

                   pushStack(st, “sms2”);

                   pushStack(st, “sms3”);

                   popStack(st);

                   popStack(st);

                   popStack(st);

                                      }

                                      public static void main(String[] a){

                                                          new StackDemo();

                                                }       

          public void pushStack(Stack st, String sms){

                   st.push(sms);

                   }       

          public void popStack(Stack st){

                   System.out.println (“data=”+ st.pop());

                   }       

          }

Ôn Tập OOP

OOP
4. Tính chất quan trọng trong OOP
1. Tính kế thừa cho phép một lớp chia sẻ các thuộc tính được định nghĩa trong một hoặc nhiều lớp khác
Lớp thừa hưởng gọi là Subclass
Super Class là lớp mà các thuộc tính của nó được lớp khác thừa hưởng
VD: xe là một lớp : các đối tượng của nó là Xe dream, mô tô
Điều có thể lái nên ta tạo lớp lái để cho các đối tượng xe có thể kế thừa 
2 Tính đa hình cho phép một phương thức có các tác động khác nhau trên nhiều loại đối tượng khác nhau
Trong Java, chúng ta sử dụng nạp chồng phương thức (method overloading) và ghi đè phương thức (method overriding) để có tính đa hình.
 VD:khi định nghĩa hai đối tượng “hinh_vuong” và “hinh_tron” thì có một phương thức chung là “chu_vi”. theo công thức khác với khi đối tượng là “hinh_tron”.
Khi gọi phương thức này thì nếu đối tượng là “hinh_vuong” nó sẽ tính theo công thức khác với khi đối tượng là “hinh_tron”.
3 Sự trừu tượng hóa dữ liệu là tiến trình xác định và nhóm các thuộc tính và các hành động liên quan đến một thực thể đặc thù, xét trong mối tương quan với ứng dụng đang phát triển.
nói cách khác mô phỏng tất cả các hành động và các thuộc tính của một thực thể. Vấn đề mấu chốt là tập trung đến những hành vi cốt yếu và áp dụng chúng trong ứng dụng.
 
VD: như máy sử dụng máy tính bạn không cần quan tâm tới chi tiết bên trong nó làm gì chúng ta sử dụng nó như một thực thể ( trừu trượng là vậy nó làm đơn giản hóa vấn đề đi )
4 Đóng gói là tiến trình che giấu việc thực thi những chi tiết của một đối tượng đối với người sử dụng đối tượng ấy.
Đặc trựng của nó là lớp 
Các đặc trưng của lớp gồm có hai phần chính : thuộc tính (Attribute) và hành vi (Behavior). 
Hàm Dựng
Thiết lập là một tiến trình hiện thực hóa một đối tượng. 
Hàm thiết lập là một phương thức đặc biệt phải được gọi trước khi sử dụng bất kỳ phương thức nào trong một lớp. Hàm Thiết lập khởi tạo các thuộc tính, và cấp phát bộ nhớ trong máy tính khi cần thiết. 
Hàm Hủy
Hàm Hủy là một phương thức đặc biệt được dùng để hủy bỏ một đối tượng. 
Tiến trình Hủy tiêu hủy một đối tượng và giải phóng khoảng trống bộ nhớ mà hàm thiết lập đã cấp phát cho nó. Hàm Hủy cũng triệt tiêu khả năng truy cập đến đối tượng ấy. 
Các lớp xếp lồng vào  nhau (nested classes)
 Lớp kiểu tĩnh (static) 
Lớp kiểu tĩnh được định nghĩa với từ khoá static. Lớp tĩnh có thể truy nhập vào các thành viên của lớp phủ nó thông qua một đối tượng. Do vậy lớp tĩnh thường ít được sử dụng. 
Lớp kiểu động (non static)
Lớp bên trong (inner) thuộc loại quan trọng nhất của các lớp kiểu lồng. thể ngược lại
Đó là các lớp nonstatic.Lớp bên trong có thể truy nhập tất cả các thành viên của lớp bao nó, song không 
 Định nghĩa lớp bên trong chỉ có thể xác định được trong phạm vi lớp ngoài cùng. 
class Outer {
 //Outer class constructor 
class Inner { 
//Inner class constructor 
    } 
Cú pháp sau đây cho phép truy nhập vào lớp bên trong Outer.Inner obj=new Outer().new Inner();
Từ khoá super
Đôi khi bạn không muốn thực hiện viết chồng một phương thức mà chỉ muốn thêm chức năng vào phương thức. 
Để làm được điều này, bạn gọi phương thức được viết chồng dùng từ khoá super. Từ khoá super dùng khi lớp con cần tham chiếu lớp cha trực tiếp của nó.
Sử dụng từ khoá final cấm sự kế thừa
Muốn khai báo một lớp mà không có lớp con kế thừa, bạn sử dụng từ khoá final. Với một lớp final, thì tất cả các phương thức của nó sẽ là final. 
Ta không thể khai báo một lớp vừa abstract và final vì một lớp trừu tượng là một lớp chưa hoàn chỉnh và phải có lớp con để hiện thực đầy đủ