Tuesday, January 21, 2014

Cài iATKOS 10.7.2 trên dòng Dell Vostro 3550

Nay chia sẽ với anh em cách cài của mình....
Máy mình cài thành công như sau,mục đích của mình là học Objective-C nên chỉ tìm hiểu cài dc những thứ cơ bản nhất để chạy dc xCode thui nhé ;)
+ Dual boot : OK
+ Wifi : OK
+ Webcam : OK
+ USB : 2.0 + 3.0 OK
+ Card VGA : OK (Intel Graphics HD3000) Res : 1366x768
+ Sound : OK
+ Touchpad : Chưa test vì touchpad mình hư :(
Screenshot:
[​IMG]
Chuẩn bị :
+ Đĩa DVD iATKOS L2 10.7.2 hoặc USB càng tốt :D
+ Một USB chứa các Kext cần thiết
- Kext Wifi : http://www.osx86.net/view/1279-atheros_ar9285_fix.html
- Kext Audio : http://voodoohda.googlecode.com/files/VoodooHDA.kext.2.7.3.zip
- Kext VGA : http://www.mediafire.com/?us6j1ib4cwcs13c

Bước 1:

Vào Win 7 cài chương trình Paragon partition free ( http://www.download3k.com/Install-Paragon-Partition-Manager-Free-Edition.html)

Sau đó tạo 1 phân vùng dạng Apple HFS+ khoảng 50GB nha... Format và set nó primary và Active nhé:) Cái này wan trọng nha :oops:

Sau khi làm xong nhớ backup dữ liệu wan trọng (Cái này cho thêm an tâm thui :p)


Sau đó reboot lại máy vào BIOS set HDD là AHCI mode nha... rùi boot từ CD.

khi boot vào được rồi thì ta vào Utilities chọn Disk utility, bên tay trái ta chọn ổ đĩa mình cần cài Mac. (cái này ta có thể dùng Win ta chia ổ đĩa trước nhé, các bác cài em này vào). Sau khi chọn ổ đĩa xong bên tay phải ta chọn thẻ Erase, mục Format ta chọn Mac OS Extended (Journaled), phần name ta có thể đặt tên tùy ý nhé. xong rùi ta nhấn Erase chọn típ Erase. khi erase xong ta thoát Disk utility bằng cách nhấn Disk utility chọn Quit. ( mượn của bác LiemHTIT)

ta típ tục đến mục chọn đĩa ta chọn đĩa mình muốn cài Mac, ổ lúc này ta erase và đặt tên.
nhấn Customize. (Phần quan trọng)

Mình chỉ chọn những thứ sau : PS2 ,Laptop Battery,USB, Sata -> AHCI.

Sau đó nhấn OK rùi Install là OK...

Cài đặt cũng khá lâu đấy ^^ mình khoảng 15mins

Sau khi xong nó tự reboot lấy đĩa DVD ra để nó boot từ HDD... sau khi vào giao diện dual boot bấm 1 phím bất kì rùi gõ lệnh
-s
Đợi nó load xong hết hiện ra #root ta gõ tiếp:
/sbin/fsck -fy

đợi 1 tý rùi gõ tiếp:
/sbin/mount -uw / ( có khoảng trắng sau chữ w nha)

tiếp tục gõ:
cd System/Library/Extensions"
tiếp nó hiện lên #Extensions thì gõ tiếp:
rm -rf ATI* ( bấm Enter)
rm -rf AppleIntel* (bấm Enter)
rm -rf NVD* (bấm Enter)

Sau đó kết thúc: gõ exit
rồi đợi tý : nó vao được Welcome là thành công rùi 

=======================================================
Mình thấy cài Mac cũng đơn giản mà.
1. Bộ cài đặt.
2. USB
3. Tạo bộ cài.
4. EFI emulator
5. Boot Mac OS X install
6. Install
7. Install Driver
8. Thưởng thức :D

Các dòng Core I hiện nay hầu hết cài được Mac, chỉ có cái card màn hình rời là hơi khó chịu thôi. Còn webcam với mấy thứ linh tinh card mạng hầu hết đều có driver.
Bộ cài đặt và giả lập EFI có thể google. Sau đó dùng transmac để tạo bộ cài đặt trên windows. Dùng EFI emulator ( cái này là file iso, có thể dùng Easy BCD tạo menu boot cùng với windows nếu được cài trên MBR ) để boot vào USB tạo bộ cài đặt. Nếu cài trên ổ cứng MBR thì cần phải replace file OSinstall để cài được trên MBR. Nên dùng windows tạo thêm phân vùng trước khi dùng cái disk manager của Mac. Khi vào Mac chỉ cần format phân vùng đó là xong. Sau khi cài đặt xong thì kiếm driver (kext) cho máy. Cái này phải chịu khó tìm từng cái một, này là mệt nhất :D. Trong quá trình vọc rất dễ "bị thương" nên cứ tới đâu backup tới đó cho nó lành (dùng công cụ có sẵn của Mac). Đó là kinh nghiệm của mình :D.
Còn chi tiết của các bước mình thấy trên mạng nhiều người share lắm :D
( HP 4530s Mac OS 10.7.2 full work )

Monday, January 13, 2014

Tại sao hàm main trong Java lại là public static?

Hàm main trong Java là hàm đầu tiên mà lập trình viên biết đến khi bắt đầu học lập trình Java. Bạn có bao giờ nghĩ là tại sao hàm main trong Java là public static void hay không? Hầu hết chúng ta đã học C hoặc C++ thì khi qua học Java hàm main cũng như hàm main bên đó, nhưng trong Java thì có một chút khác biệt là hàm main trong Java không  trả về một giá trị nào trong khi trong C thì trả về int. Trong bài viết này, chúng ta sẽ cố gắng trả lời cho câu hỏi tại sao hàm main lại là public static void.
Hàm main trong Java là gì?
Hàm main trong Java là điểm xuất phát cho bất kỳ một chương trình thuần Java nào. Trong chương trình Java, quá trình thực thi bắt đầu từ hàm main khi bạn viết tên của một lớp chính trong Java, thì JVM sẽ tìm đến hàm public static void main(String args[])  trong lớp đó và nếu không tìm thấy hàm đó thì quăng ra lỗi NoSuchMethodError:main và kết thúc.
Dấu hiệu của hàm main trong Java
Hàm main phải nghiêm chỉnh tuân theo những ký tự mà nó phải có, nếu không thì JVM không thể định vị được nó và chương trình của bạn sẽ không chạy. Đây là dấu chỉ chính xác của hàm main
1
public static void main(String args[])
Dấu hiệu này là dấu hiệu trước đây và từ Java 5 bạn cũng có thể khai báo hàm main trong Java như sau:
1
public static void main(String args)
Tai sao hàm main trong Java là static
Có những lý do sau đây:
  1. Vì hàm main là hàm static JVM có thể gọi nó mà không cần phải tạo ra bất kỳ một thể hiện nào của lớp chứa hàm main.
  2. Vì C và C++ cũng có hàm main để làm điểm khởi đầu cho việc thực thi chương trình, Java sử dụng lại quy luật này.
  3. Nếu hàm main không được khai báo static thì JVM phải tạo ra thể hiện của lớp chứa hàm main và vì constructor có thể được overload và có thể có tham số nên sẽ không có một cách chắc chắn nào để JVM tìm thấy hàm main trong Java.
  4. Bất cứ điều gì được khai báo trong các lớp trong Java thì chịu ảnh hưởng của loại dữ liệu của tham số và cần phải được tạo ra trước khi sử dụng chúng, nhưng hàm static và dữ liệu kiểu static được load vào vùng nhớ riêng trogn JVM gọi là context, được tạo ra khi lớp được load lên. Nếu hàm main là static thì nó sẽ được load vào JVM context và được thực thi.
Tại sao hàm main là public: Java xác định rằng hàm hoặc biến nào được khai báo là public thì có thể truy xuất từ bên ngoài lớp đó. Vì hàm main là public nên JVM dễ dàng để truy xuất vào và thực thi nó.
Tại sao hàm main là void: Vì hàm main không trả về giá trị nào nên nó là void thui. :)
Tóm lại:
  1. Hàm main phải được khai báo là public static void trong Java nếu không thì JVM không thể chạy chương trình.
  2. JVM sẽ quăng ra lỗi NoSuchMethodExeption:main nếu nó không tìm thấy hàm main được được hàm main.
  3. Hàm main là điểm xuất phát của chương trình Java.
  4. Hàm main được chạy bởi luồng đặc biệt gọi là luồng “main” trong Java. Chương trình Java của bạn sẽ chạy cho đến khi luồng main hoặc không còn luồng phụ nào sinh ra từ hàm main chạy nữa.
  5. Bạn có thể khai báo hàm main sử dụng public static void main(String…args) từ Java 1.5
  6. Ngoài static void và public bạn có thể sử dụng final, synchronized và strictfp trong dấu hệu của hàm main trong Java.
  7. Hàm main có thể được overload như bất kỳ hàm khác nhưng JVM sẽ chỉ gọi hàm main được xác định với những dấu hiệu trên.
  8. Bạn có thể sử dụng throws trong dấu hiệu của hàm main và quăng ra ngoại lệ.

Phương thức trong java

Method - phương thức trong java
I. GIỚI THIỆU VỀ PHƯƠNG THỨC 1. Khai báo phương thức (hàm)
Dạng tổng quát của một phương thức như sau :
[acess] : điều khiển truy xuất
[static] : hàm lớp
[abstract] : hàm trừu tượng
[final] : hàm hằng
Type] MethodName(Parameter-List) throws exceptions {
// Body of method
}

- Type : Kiểu dữ liệu do hàm trả về, có thể là kiểu bất kỳ, kể cả các kiểu lớp do bạn tạo ra. Nếu hàm không trả về giá trị nào, kiểu trả về của nó phải là void.
- Các hàm có kiểu trả về không phải là void sẽ trả về một giá trị cho chương trình gọi nó dùng dạng câu lệnh return như sau : return biểu thức;
Giá trị của biểu thức được tính và trả về cho hàm
- Tất cả thông tin bạn muốn truyền được gởi thông qua tham số nằm trong hai dấu ( ) ngay sau tên hàm. Nếu không có tham số vẫn phải có ( )
Parameter-List : Danh sách tham đối phân cách bởi các dấu phẩy, mỗi tham đối phải được khai báo kiểu, có thể là kiểu bất kỳ, có dạng : Type Parameter1, Type Parameter2 ...

2. Phạm vi truy xuất thành phần của lớp
Các điều khiển truy xuất của Java là public, private và protected. protected chỉ áp dụng khi có liên quan đến kế thừa sẽ xét đến sau
Khi bổ sung tiền tố cho một thành phần của lớp (biến và hàm) là : - Từ khoá public : chỉ ra rằng thành phần này có thể được truy xuất bởi bất kỳ dòng lệnh nào dù ở trong hay ngoài lớp mà nó khai báo
 
- private : chỉ có thể được truy xuất trong lớp của nó, mọi đoạn mã nằm ngoài lớp, kể cả những lớp con đều không có quyền truy xuất - Khi không có điều khiển truy xuất nào được dùng, mặc nhiên là public nhưng chỉ trong gói của nó, không thể truy xuất từ bên ngoài gói của nó
 
3. Phương thức main()
Khi chạy ứng dụng độc lập, bạn chỉ tên Class muốn chạy, Java tìm gọi hàm main() trước tiên trong Class đó, phương thức main sẽ điều khiển chạy các phương thức khác.
Dạng tổng quát của phương thức main()
public static void main(String args[]) {
// Body of Method
}
- Một chương trình chỉ cần một lớp có phương thức main() gọi là lớp ứng dụng độc lập Primary Class.
 
- Từ khoá static cho phép hàm main() được gọi khi không cần khởi tạo đối tượng. Vì main() được trình thông dịch của Java gọi trước khi bất kỳ lớp nào được khởi tạo
 
- Từ khoá void cho biết hàm main() không trả về giá trị
 
- Từ khoá public chỉ ra rằng hàm này được gọi bởi dòng lệnh bên ngoài lớp khi chương trình khởi động.
 
- Tham đối String args[ ] khai báo tham số tên args thuộc lớp String, chứa chuỗi ký tự. Tham đối này giữ các tham đối dòng lệnh dùng khi thi hành chương trình. Ví dụ 1 :
 
class ViDu {
public static void main (String args[]) {
for (int i=0; i < args.length; i++) {
System.out.println(“Tham doi thu “+i+”: “+args);
}
}
}
Khi chạy chương trình :
C:\>
¿java ViDu Thu tham doi dong lenh
Tham doi thu 0 : Thu
Tham doi thu 1 : tham ....
C
:>¿java ViDu Thu “tham doi” “dong lenh”
Tham doi thu 0 : Thu
Tham doi thu 1 : tham doi
Tham doi thu 2 : dong lenh
Ví dụ 2 :
class ViDu2;
public static void main(String args[]) {
int sum = 0;
float avg = 0;
for (int i=0; i<args.length;i++) {
sum += Integer.parseInt(args);
}
System.out.println(“Tong =”+sum);
System.out.println(“Trung binh =”+ (float) sum/args.length);
}
}
Khi chạy chương trình :
C:\>
¿java ViDu2 1 2 3
Tong = 6
Trung binh = 2

4. Hàm khởi tạo (Constructor)
Có những thao tác cần thực hiện mỗi khi đối tượng lần đầu tiên được tạo như khởi tạo giá trị cho các biến. Các công việc này có thể làm tự động bằng cách dùng hàm khởi tạo.
Hàm khởi tạo có cùng tên với lớp mà nó thuộc về, chỉ được tự động gọi bởi toán tử new khi đối tượng thuộc lớp được tạo. Hàm khởi tạo không có giá trị trả về, khi định nghĩa hàm có thể ghi void hay không ghi. Ví dụ : - kích thước hộp được khởi tạo tự động khi đối tượng được tạo.
 
class Box {
double width;
double height;
double depth;
double volume() {
return width * height * depth; } Box(double w, double h, double d) { width = w; height = h;
depth = d;
} } class BoxDemo { public static void main (String args[ ]) { Box myBox1 = new Box(10,20,15);
Box myBox2 = new Box(3,6,9); double vol; vol = myBox1.volume(); System.out.println(“Thể tích là : “+vol); vol = myBox2.volume(); System.out.println(“Thể tích là : “+vol); }
} - Khi bạn không định nghĩa tường minh hàm khởi tạo cho một lớp, Java sẽ tạo hàm khởi tạo mặc nhiên cho lớp đó. Vì vậy các chương trình trước đó vẫn làm việc bình thường. Hàm khởi tạo mặc nhiên không có danh sách tham đối, tự động khởi tạo tất cả các biến của đối tượng về trị rỗng theo các quy ước mặc định của Java, trị 0 cho kiểu số, ký tự ‘\0’ cho kiểu ký tự char, trị false cho kiểu boolean, trị null cho các đối tượng
 
- Hàm khởi tạo cũng có thể được nạp chồng như hàm bình thường ̣(sẽ nói rõ ở phần sau) nghĩa là ta được phép định nghĩa nhiều hàm khởi tạo khác nhau ở danh sách tham đối hay kiểu tham đối

5. Hàm hủy
Các đối tượng cấp phát động bằng toán tử new, khi không tồn tại tham chiếu nào đến đối tượng, đối tượng đó xem như không còn cần đến nữa và bộ nhớ cho nó có thể được tự động giải phóng bởi bộ thu gom rác (garbage collector). Trình thu gom rác hoạt động trong một tuyến đoạn (Thread) độc lập với chương trình của bạn. Bạn không phải bận tâm gì đối với công việc này. Sau này bạn sẽ hiểu rõ tuyến đoạn là thế nào
Tuy nhiên, Java cũng cho phép ta viết hàm hủy, có thể cũng cần thiết cho những trường hợp nào đó. Hàm hủy trong Java chỉ được gọi bởi trình thu gom rác, do vậy bạn khó đoán trước vào lúc nào hàm hủy sẽ được gọi
Dạng hàm hủy như sau :
protected void finalize() {
// Body of Method
}

6. Từ khoá this
Nếu biến được định nghĩa trong thân hàm, đó là biến cục bộ chỉ tồn tại khi hàm được gọi. Nếu biến cục bộ như vậy được đặt tên trùng với biến đối tượng hoặc biến lớp, nó sẽ che khuất biến đối tượng hay biến lớp trong thân hàm :
Ví dụ :
class ViDu {
int test = 10; // Biến đối tượng
void printTest() {
int test = 20; // Biến cục bộ
System.out.println(“test = “+test); // In biến cục bộ
}
public static void main(String args[]) {
ViDu a = new ViDu();
a.printTest();
}
}
Từ khoá this có thể dùng bên trong bất cứ phương thức nào để tham chiếu đến đối tượng hiện hành, khi biến đối tượng trùng tên với biến cục bộ.
 
Ví dụ : Thay dòng lệnh trên :
System.out.println(“test = “+this.test); // In biến cục bộ, this chỉ đối tượng a

7. Nạp chồng hàm (Overloaded Methods)
Trong cùng một lớp, Java cho phép bạn định nghĩa nhiều hàm trùng tên với điều kiện các hàm như vậy phải có danh sách tham đối khác nhau, nghĩa là khác nhau về số tham đối hoặc kiểu của các tham đối. Khả năng như vậy gọi là sự nạp chồng hàm. Java chỉ phân biệt hàm này với hàm khác dựa vào số tham đối và kiểu của các tham đối, bất chấp tên hàm và kiểu của kết quả trả về.
Ví dụ :
// MyRect.java
import java.awt.Point;
class MyRect {
int x1 = 0;
int y1 = 0;
int x2 = 0;
int y2 = 0;
MyRect buildRect(int x1, int y1, int x2, int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
return this;
}
MyRect buildRect(Point topLeft, Point bottomRight) {
x1 = topLeft.x;
y1 = topLeft.y;
x2 = bottomRight.x;
y2 = bottomRight.y;
return this;
}
MyRect buildRect(Point topLeft, int w, int h) {
x1 = topLeft.x;
y1 = topLeft.y;
x2 = x1+w;
y2 = y1 + h;
return this;
}
void display() {
System.out.print(“Doi tuong MyRect : <” + x1 + “, “+y1);
System.out.println(“, “+x2+”, “+y2+”>”);
}
}
Thật ra, trong gói awt có sẵn lớp Rectangle chuyên dùng để biểu diễn hình chữ nhật. Lớp MyRect của ta chỉ dùng để minh hoạ cho khái niệm nạp chồng hàm. Trong lớp MyRect có những hàm giúp bạn tạo ra đối tượng MyRect với những yếu tố cho trước khác nhau :
- Cho trước toạ độ góc trên trái x1, y1 và toạ độ góc dưới phải x2, y2
- Cho trước góc trên trái và góc dưới phải của hình chữ nhật dưới dạng đối tượng Point
- Cho trước toạ độ góc trên trái của hình chữ nhật dạng đối tượng Point cùng chiều rộng, chiều cao
Nhờ khả năng nạp chồng hàm, bạn chỉ cần nhớ một tên hàm cho các hàm khác nhau cùng chức năng
Chương trình sử dụng lớp MyRect xây dựng ở trên :
import java.awt.Point;
class UngDung {
public static void main(String args[]) {
MyRect rect = new MyRect();
rect.buildRect(25,25,50,50);
rect.display();
rect.buildRect(new Point(10,10), new Point(20,20));
rect.display();
rect.buildRect(new Point(10,10), 50, 50);
rect.display();
}
}

8. Truyền tham đối
Java dùng cả hai cách truyền tham đối : truyền bằng giá trị và truyền bằng tham chiếu, tùy vào cái gì được truyền - Khi ta truyền một kiểu sơ cấp cho phương thức, nó sẽ truyền bằng giá trị. Vì vậy những gì xảy ra với tham đối trong phương thức, khi ra khỏi phương thức sẽ hết tác dụng - Khi ta truyền một đối tượng (kiểu phức hợp) cho phương thức, nó sẽ truyền bằng tham chiếu. Vì vậy, thay đổi ở đối tượng bên trong phương thức ảnh hưởng đến đối tượng dùng làm tham đối.
Ví dụ 1 :
class ViDu {
void tinhToan(int i, int j) {
i *= 2;
j /= 2;
}
}
class UngDung {
public static void main(String args) {
ViDu o = new ViDu();
int a = 15, b = 20;
System.out.println(“a và b trước khi gọi : “+a+ “ ”+b);
o.tinhToan(a, b);
System.out.println(“a và b sau khi gọi : “+a+” “+b);
}
}
Kết quả của chương trình :
a và b trước khi gọi : 15 20
a và b sau khi gọi : 15 20
Ví dụ 2 :
class ViDu {
int a, b;
ViDu (int i, int j) {
a = i;
b = j;
}
void tinhToan(ViDu o) {
o.a *= 2;
0.b /= 2;
}
}
class UngDung {
public static void main(String args[]) {
ViDu o = new ViDu(15, 20);
System.out.println(“o.a và o.b trước khi gọi : “+o.a+” “+o.b);
o.tinhToan(o);
System.out.println(“o.a và o.b sau khi gọi : “+o.a+” “+o.b);
}
}
Kết quả chương trình :
o.a và o.b trước khi gọi : 15 20
o.a và o.b sau khi gọi : 30 10

Saturday, January 11, 2014

Bài 37: HashMap trong Java


java-collection-HashMap

** Gần giống với ArrayList, tuy nhiên HashMap là 1 kiểu đối tượng lưu giá trị theo cặp key / value
Key trong 1 đối tượng kiểu HashMap là duy nhất. HashMap truy cập theo key, không theo số thứ tự giống ArrayList hoặc Array.
** Với mỗi key, bạn sẽ tìm được giá trị tương ứng với key đó. Các key là duy nhất nhưng các giá trị tương ứng với các key khác nhau thì có thể trùng nhau.
** Kiểu đối tượng của giá trị key/value của HashMap phải đồng nhất. Trong trường hợp không xác định kiểu dữ liệu thì java sẽ xem như là kiểu Object – là cha của tất cả đối tượng khác trong Java.

1, Khởi tạo một Hashmap

**Khởi tạo từ interface Map, chưa định nghĩa kiểu giá trị
PHP:
 Map hMap1 = new HashMap();
**Khởi tạo từ interface Map, định nghĩa trước kiểu giá trị
PHP:
Map<IntegerStringhMap2 = new HashMap();
**Khởi tạo từ HashMap, chưa định nghĩa trước kiểu giá trị
PHP:
HashMap hMap3 = new HashMap();
**Khởi tạo từ HashMap, định nghĩa trước kiểu giá trị
PHP:
HashMap<IntegerStringhMap4 = new HashMap();HashMap hMap5 = new HashMap<IntegerString>();HashMap<IntegerStringhMap6 = new HashMap<IntegerString> ();
**Chú ý: HashMap chỉ chấp nhận dữ liệu (cả key và value) là các đối tượng. Do đó, các kiểu int, long, double,… không được chấp nhận mà phải dùng Integer, Long, Double,…

2, Cách thức đưa dữ liệu vào và lấy dữ liệu ra từ đối tượng HashMap.

Không phải là phương thức add giống ArrayList, khác biệt một chút! Ta sử dụng put và get
PHP:
hashmap.put (keyvalue); //đưa key và value vào hashmaphashmap.get(key); // Lấy value tương ứng với key trong hashmap

Ví dụ 1: 
PHP:
package javaandroidvn;
 
import java.util.HashMap;

public class 
JavaAndroidVn {

    public static 
void main(String[] args) {
        
HashMap user = new HashMap();
        
user.put("ID1""TranvanA");
        
user.put("ID2""NguyenVanT");
        
user.put("ID3""VuVanT");

        
System.out.println(user.get("ID1"));
        
System.out.println(user.get("ID2"));
        
System.out.println(user.get("ID3"));

    }
}
Ví dụ 2: 
PHP:
package javaandroidvn;
 
import java.util.HashMap;

public class 
JavaAndroidVn {

    public static 
void main(String[] args) {
      
HashMap<IntegerStringuser = new HashMap<> ();
      
user.put(1"Vu Van A");
      
user.put(2"Nguyenvan t");
      
user.put(3"Nguyenvan C");
      
user.put(4"NguyenvanE");

      
System.out.println(user.get(1));
      
System.out.println(user.get(2));
      
System.out.println(user.get(3));
      
System.out.println(user.get(4)+"\n");

      
//Hoặc nếu key gán theo thứ tự số nguyên, có thể dùng :
      
for (int i=1i<5i++){
          
System.out.println(user.get(i));
      }


    }
}
**Chú ý: Dữ liệu đưa vào HashMap phải ứng với kiểu dữ liệu đã định nghĩa lúc khởi tạo HashMap.

3, Cách lấy tất cả các giá trị của HashMap

Các bạn xem ví dụ, nó sẽ lấy toàn bộ dữ liệu từ trong đối tượng HashMap ra:
PHP:
package javaandroidvn;
 
import java.util.HashMap;

public class 
JavaAndroidVn {

    public static 
void main(String[] args) {
        
HashMap<IntegerStringuser = new HashMap<>();
        
user.put(8"Vu Van A");
        
user.put(5"Nguyenvan t");
        
user.put(3"Nguyenvan C");
        
user.put(10"NguyenvanE");

        for (
Integer i user.keySet()) {
            
System.out.println(" " user.get(i));
        }
    }
}
**Ngoài ra còn có một vài phương thức như remove, clear dùng để xóa bỏ một đối tượng và xóa sạch các đối tượng trong HashMap

Xem thêm video blog StudyAndShare



[IMG]

Bài tập về nhà::D
Tạo một đối tượng HashMap gồm key là tài khoản, value là mật khẩu. Nhập giá trị các tài khoản và mật khẩu của 5 đối tượng từ bàn phím. In thông tin tất cả ra ngoài màn hình console!