30/09/2018, 18:27
Xóa các phần tử trùng nhau trong list
như tiêu đề thì mục đích của đoạn code này của em là muốn xóa các phần tử trùng nhau trong list vậy nó sai ở đâu vậy ạ
String ten;
Console.WriteLine("Nhap vao ten can xoa trong list");
ten = Console.ReadLine();
for (int j = 0; j < listSV.Count; j++) {
if ( listSV[j].TenSV==ten) {
listSV.Remove(listSV[j]);
}
}
ouputSv();
Bài liên quan
vòng for cho chạy tới listSV.Count ban đầu, mà trong quá trình xóa thì số lượng sv trong list sẽ giảm => j sẽ truy cập phần tử ngoài listSV.
vd ban đầu có 10 sv, j chạy từ 0 tới 9. Xóa 3 sv, còn 7, j lúc này bằng 7, hay truy cập phần tử thứ 8 trong list (listSV[7]) ko có -> lỗi
vậy phải giải quyết như thế nào hả anh
nó k xóa được cái tiếp theo anh ạ.ví dụ trong list có hai tên :long thì nó chỉ xóa được cái đầu thôi
hơn nữa em tưởng trong list nó sẽ tự động cập nhật Count
cách dễ nhất là tạo 1 cái list mới, kiểm tra từng sv trong list cũ, sv nào có tên khác tên cần xóa thì bỏ sv đó vào list mới. Sau khi làm xong thì gán list cũ = list mới.
thế sửa 1 phần tử trong list thì làm như thế nào ạ.tìm xong sửa nó ấy ạ
sửa thì viết bình thường thôi. Xóa phần tử trong list thì mới cần tạo list mới cho chắc.
như nào á.ví dụ mình tìm tên quang và sửa lại thành long còn các thông tin khác giữ nguyên
thế ví dụ muốn sửa toàn bộ tất cả các thông tin thì làm sao hả anh
thì cũng làm tương tự thôi, mà mỗi thông tin viết ra 1 cái phương thức riêng, ví dụ đổi tên thì ChangeName(string), v.v…
Affter remove element in array call method:
Dùng do while thay cho for, nếu xóa được thì không tăng biến đếm, ngược lại thì tăng biến đếm.
If ( !listSV.contains(listSV[j]){
newListSV.add(listSV[j];
}