30/09/2018, 18:49
Cách xoá một phần tử của mảng vĩnh viễn trong java
public boolean delete(int tim_ma) {
int i;
for(i=0; i<dem; i++)
if(a[i].getMaSV()==tim_ma) { //tìm vị trị của sinh viên trong mảng
break;
}
if(i==dem) //không tìm thấy mã sinh viên cần xoá
return false;
for(int j=i; j<dem-1; j++) //cập nhật lại mảng
a[j] = a[j+1];
dem--;
return true;
}
Cách này của em chỉ có tác dụng khi truy cập không hết mảng. Em muốn xoá vĩnh viễn thì phải làm sao nhỉ??
Bài liên quan
Em khai báo
a
như thế nào?Cái này có thể dùng vòng lặp khác được không nhỉ
mảng array thì làm sao mà xóa được, chỉ có đánh lại chỉ mục thôi. Muốn sử dụng mảng động thì nghiên cứu các class implement từ interface Collection nhé gồm có
List: ArrayList, LinkedList, …
…
Chỉ có mảng động mới xóa được thôi, mình thì hay dùng ArrayList, nếu xóa phần tử nào thì chỉ cần gọi hàm remove là xong, mình không hiểu rõ lắm nhưng có cảm giác nó giống danh sách liên kết trong C++
Không tính đến code đúng sai. Chỉ viết lại code theo cách khác thôi nhé:
Nghĩ đơn giản một chút mọi thứ sẽ dễ dàng. Biết bài lâu rồi nhưng rep cho các bạn sau cần tìm
public static int[] remove(int[] a, int i) {
int[] b = new int[a.length - 1];
System.arraycopy(a, 0, b, 0, i);
System.arraycopy(a, i + 1, b, i, a.length - i - 1);
return b;
}