Friday, October 9, 2015

Hai cách quản lý một tập hợp trong Java

Trong java, bạn có thể quản lý tập hợp các phần tử theo 2 cách:

  • Sử dụng mảng

  • Sử dụng danh sách


Trong khuôn khổ bài này, chúng ta cùng tìm hiểu ArrayList – một lớp đơn giản để quản lý tập hợp.
Yêu cầu:
Tạo một chương trình để người dùng quản lý 5 phần tử kiểu int và lưu vào một mảng.

  • In giá trị các phần tử trong mảng.

  • In các phần tử theo thứ tự giảm dần.

  • In các phần tử trong mảng mà chia hết cho 5.

  • Cho người dùng nhập vào một số, hiển thị số lần xuất hiện của số vừa nhập có trong mảng ban đầu.


Output:
1

1. Cách 1: Khởi tạo mảng int theo cách thông thường:

int[] array = new int[5];


Nếu khởi tạo mảng dạng này, khi chúng ta gán mảng 5 phần tử thì số phần tử đó là cố định. Chúng ta muốn tăng số phần tử lên để quản lý nhiều hơn thì phải tốn nhiều công sức cho bước tăng trưởng. Đây cũng là sự bất tiện của cách quản lý này.

Code tham khảo:

[sourcecode language="java"]
public class Array_PrimitiveDataType {

int[] array;

public Array_PrimitiveDataType() {
array = new int[5];
}

/**
* input array
*/
void inputArray(){
System.out.println("-----Nhap mang-----");
Scanner input = new Scanner(System.in);
for (int i = 0; i < array.length; i++) {
System.out.print("Nhap phan tu thu " + (i+1) + ":");
array[i] = input.nextInt();
}
System.out.println("");
}

void printArray(){
System.out.println("-----In----");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + "\t");
}
System.out.println("");
}

void sortDescArray(){
System.out.println("-----Sap xep-----");
for (int i = 0; i <= array.length - 2; i++) {
for (int j = i+1; j <= array.length -1; j++) {
if(array[i] < array[j]){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}

void searchNumber(){
System.out.println("----Tim mot so-----");
Scanner input = new Scanner(System.in);
System.out.print("Nhap mot so can tim:");
int so = input.nextInt();
int dem = 0;
for (int i = 0; i < array.length; i++) {
if(array[i] == so) dem++;
}
System.out.println("Co " + dem + " phan tu trong mang co gia tri " + so);
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Array_PrimitiveDataType demo = new Array_PrimitiveDataType();
demo.inputArray();
demo.printArray();
demo.sortDescArray();
demo.printArray();
}
}
[/sourcecode]

Video:

[embed]https://www.youtube.com/watch?v=3-Vu-y7SoTk[/embed]

2. Cách 2: Khởi tạo một đối tượng của lớp ArrayList được hỗ trợ sẵn trong API của Java.

Với việc quản lý này, người dùng tự do thêm bớt phần tử nếu muốn thông qua các phương thức của nó. Vì nó không giới hạn số phần tử được quản lý. Đây là sự thuận tiện khi sử dụng lớp ArrayList so với cách khai báo thông thường.

ArrayList array = new ArrayList();


Đặc biệt: đối tượng trong tập hợp trên chỉ quản lý các đối tượng mà không quản lý các biến kiểu dữ liệu nguyên thủy. Vì vậy, khi thêm dữ liệu mới hoặc lấy ra một phần tử trong tập hợp, chúng ta luôn thao tác với đối tượng (Có thể sử dụng Wrapper Class để quản lý các kiểu dữ liệu nguyên thủy khi cần thiết).

Code tham khảo:

[sourcecode language="java"]
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.Scanner;

/**
*
* @author maithicamnhung
*/
public class Bai1_ArrayList {
ArrayList arr = new ArrayList();

// Nhap du lieu
public void inputList(){
System.out.println("Enter elements:");
Scanner input = new Scanner(System.in);
for(int i = 0 ; i < 4 ; i++){
System.out.println("Element " + (i+1) + ":");
int value = input.nextInt();
arr.add(value);
}
}

// In du lieu mang
public void printList(){
System.out.println("======List=====");
Iterator iarr = arr.iterator();
while(iarr.hasNext()){
System.out.println(iarr.next());
}
}

// Sap xep mang tang dan
public void printListOrderAsc(){
Collections.sort(arr);
System.out.println("======List Order Asc=====");
Iterator iarr = arr.iterator();
while(iarr.hasNext()){
System.out.println(iarr.next());
}
}

// Sap xep mang giam dan
public void printListOrderDes(){
Collections.sort(arr, Collections.reverseOrder());
System.out.println("======List Order Des=====");
Iterator iarr = arr.iterator();
while(iarr.hasNext()){
System.out.println(iarr.next());
}
}

// Chia het cho 5
public void divideFive(){
System.out.println("Element divide 5:");
Iterator iarr = arr.iterator();
while(iarr.hasNext()){
Integer value = (Integer) iarr.next();
if(value.intValue() % 5 == 0){
System.out.println(value);
}
}
}

public void searchNumber(){
Scanner input = new Scanner(System.in);
System.out.println("Enter number to search:");
int count = 0;
int number = input.nextInt();
Iterator iarr = arr.iterator();
while(iarr.hasNext()){
Integer value = (Integer)iarr.next();
if(value.intValue() == number){
count++;
}
}
System.out.println("Count: " + count);
}

public static void main(String[] args) {
Bai1_ArrayList arrList = new Bai1_ArrayList();
arrList.inputList();
arrList.printList();
arrList.printListOrderAsc();
arrList.printListOrderDes();
arrList.divideFive();
arrList.searchNumber();
}
}
[/sourcecode]

Video:

[embed]https://www.youtube.com/watch?v=lHJ0r_SHDMA[/embed]

Chúc các bạn thành công.

No comments:

Post a Comment

Translate