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 2ArrayList
này, - Hiển thị các phần tử của 2
ArrayList
này sử dụngIterator
. - 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 trongArrayList
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ạiArrayList
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:
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
Để 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 viết này được đăng tại [free tuts .net]
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:
Câu hỏi thường gặp liên quan:
- Java - Tìm và hiển thị phần tử lớn nhất trong 1 ArrayList.
- Java - Viết chương trình tạo 1 ArrayList mới từ 1 ArrayList đã tồn tại.
- Java - Viết chương trình loại bỏ các phần tử trùng nhau trong 1 ArrayList.
- Java - Tính và hiển thị tổng các phần tử của ArrayList.
- Java - Viết chương trình tương tác với 2 ArrayList.