Java - Viết chương trình tương tác với 2 ArrayList.

Viết chương trình thực hiện các yêu cầu sau:

  • Tạo 2 ArrayList: ArrayList 1 chứa các phần tử có kiểu chuỗi và ArrayList 2 chứa các phần tử là số nguyên. Sau đó nhập vào 5 phần tử cho 2 ArrayList này,
  • Hiển thị các phần tử của 2 ArrayList này sử dụng Iterator.
  • Tìm kiếm vị trí xuất hiện đầu tiên và cuối cùng của 1 phần tử bất kỳ trong ArrayList 1. Nếu không tìm thấy phần tử đó thì hiển thị thông báo không tìm thấy.
  • Tạo 1 List có các phần tử được tách từ vị trí số 3 trong ArrayList 2.
  • Đảo ngược các phần tử trong 2 ArrayList này.
  • Xáo trộn các phần tử trong ArrayList 1 và hiển thị lại ArrayList này sau khi xáo trộn.
  • Chuyển ArrayList 2 thành mảng và hiển thị các phần tử của mảng.

Bài giải

-------------------- ######## --------------------

Hướng dẫn:

Để tách 1 ArrayList thành 1 List con, chúng ta sẽ sử dụng phương thức subList().

Cú pháp
subList(int fromIndex, int toIndex);

, trong đó fromIndex là vị trí bắt đầu lấy và toIndex là vị trí kết thúc. Phương thức này sẽ trả về 1 List có các phần tử nằm trong đoạn [fromIndex, toIndex) của ArrayList cần tách.

Bài giải
public static void main(String[] args) {
	String str;	// phần tử của ArrayList 1
	int number;	// phần tử của ArrayList 2	
	Scanner scanner = new Scanner(System.in);
		
	// tạo 2 ArrayList mới
	ArrayList<String> arrListA = new ArrayList<>();
	ArrayList<Integer> arrListB = new ArrayList<>();
			
	// nhập vào 5 phần tử cho 2 ArrayList này
	System.out.println("Nhập phần tử là các chuỗi cho ArrayList 1: ");
	for (int i = 0; i < 5; i++) {
		System.out.print("Nhập phần tử thứ " + i +": ");
		str = scanner.nextLine();
		arrListA.add(str);
	}
		
	System.out.println("Nhập phần tử là các số nguyên cho ArrayList 2: ");
	for (int i = 0; i < 5; i++) {
	System.out.print("Nhập phần tử thứ " + i +": ");
		number = Integer.parseInt(scanner.nextLine());	// hạn chế hiện tượng trôi lệnh
		arrListB.add(number);
	}
		
	// hiển thị các phần tử của 2 ArrayList sử dụng Iterator
	Iterator<String> iteratorA = arrListA.iterator();
	System.out.println("Các phần tử của arrListA là: ");
	while (iteratorA.hasNext()) {
		System.out.print(iteratorA.next() + "\t");
	}
		
	Iterator<Integer> iteratorB = arrListB.iterator();
	System.out.println("\nCác phần tử của arrListB là: ");
	while (iteratorB.hasNext()) {
		System.out.print(iteratorB.next() + "\t");
	}
		
	// Tìm kiếm vị trí xuất hiện đầu tiên và cuối cùng
	// của 1 phần tử bất kỳ trong arrListA
	// trong trường hợp trong ArrayList chỉ có 1 phần tử có giá trị cần tìm
	// thì vị trí xuất hiện đầu tiên và cuối cùng của phần tử đó trùng nhau.
	System.out.println("\nNhập phần tử cần tìm: ");
	String strSearch = scanner.nextLine();
	if (arrListA.contains(strSearch)) {
		int firstPosition = arrListA.indexOf(strSearch);
		int lastPosition = arrListA.lastIndexOf(strSearch);
		System.out.println("Vị trí xuất hiện đầu tiên và cuối cùng của " + strSearch 
			+ " là " + firstPosition + " và " + lastPosition);
	} else {
		System.out.println("Không tìm thấy phần tử " + strSearch);
	}
		
	// Tạo 1 List có các phần tử được tách từ vị trí số 3 trong ArrayList 2.
	// sử dụng phương thức subList()
	// trong đó 3 là vị trí bắt đầu lấy và kết thúc tại arrListB.size() - 1
	List<Integer> subList = arrListB.subList(3, arrListB.size());
	System.out.println("Các phần tử có trong subList là: " + subList);
		
	// Đảo ngược các phần tử trong 2 ArrayList này
	// sử dụng phương thức Collections.reverse()
	Collections.reverse(arrListA);
	System.out.println("Các phần tử trong arrListA sau khi đảo ngược: " + arrListA);
	Collections.reverse(arrListB);
	System.out.println("Các phần tử trong arrListB sau khi đảo ngược: " + arrListB);
		
	// Xáo trộn các phần tử trong ArrayList 1
	// sử dụng phương thức Collections.shuffle()
	// kết quả của mỗi lần sẽ khác nhau
	Collections.shuffle(arrListA);
	System.out.println("Các phần tử trong arrListA sau khi xáo trộn: " + arrListA);
		
	// Chuyển ArrayList 2 thành mảng và hiển thị các phần tử của mảng
	// sử dụng phương thức toArray()
	Object[] array = arrListB.toArray();
	System.out.println("Các phần tử của mảng array là: ");
	for (int i = 0; i < array.length; i++) {
		System.out.print(array[i] + "\t");
	}
}

Kết quả sau khi biên dịch chương trình:

Nguồn: freetuts.net