2011-09-17 33 views
147

Tôi cần trợ giúp với java này. Tôi tạo ra một ArrayList của bóng đèn, và tôi đang cố gắng để thay thế một bóng đèn tại chỉ số cụ thể với một bóng đèn. Vì vậy, với tiêu đề sau, tôi làm cách nào để tiếp tục?Java ArrayList thay thế tại chỉ mục cụ thể

public void replaceBulb(int index, Bulbs theBulb) { 

} 
+7

Đối với những gì đáng giá, tôi đã xem giao diện Danh sách để "thay thế", "đặt" hoặc "chèn". Tôi không nghĩ đến việc tìm kiếm bộ phim. – GuiSim

+2

@GuiSim danh sách giao diện không phải là dài, bạn có thể dễ dàng đọc nó toàn bộ cùng một lúc trong 5 phút ... – vaxquis

+1

Tôi đã sử dụng tự động hoàn thành của Eclipse, không nhìn qua giao diện. – GuiSim

Trả lời

257

Kiểm tra các set(int index, E element) phương pháp trong List interface

+3

u r right.But u có thể nghĩ rằng để chỉnh sửa nó bởi vì câu trả lời ur dẫn đến thực tế như set() phương pháp là một phương pháp tĩnh mà không phải là, phải không? –

+9

@AndroidKiller Nó tĩnh như 'ArrayList.set();' nhưng khi bạn gọi nó trên danh sách của riêng bạn, nó không phải: 'myArrayList.set (int, E);' – whitfin

+0

Vấn đề trong phương pháp này là nó ném arrayOutOfBoundException vào trường hợp arrayList chưa được khởi tạo. Tôi muốn đặt một phần tử vào đúng chỉ mục khi bổ sung nó, không chắc chắn có cách nào để làm điều đó hay không. – Bionix1441

20

Sử dụng phương pháp set(): see doc

arraylist.set(index,newvalue); 
106

Bạn có thể thay thế các mặt hàng tại vị trí cụ thể sử dụng phương pháp tập hợp các ArrayList như sau:

list.set(your_index, your_item); 

Nhưng phần tử phải có mặt tại chỉ mục bạn đang truyền bên trong phương thức set() nếu không nó sẽ ném ngoại lệ.

+1

@vaxquis ok, bạn hãy viết java 8 và phát hành nó. chúng tôi ở đây để sử dụng nó. ;). Trong SO, câu trả lời phải luôn luôn theo câu hỏi, vì vậy hãy đọc câu hỏi trước. Và vấn đề là gì nếu nó trả về giá trị trước đó, nếu bạn muốn giá trị đó thì bạn có thể sử dụng khác để lại nó. Nó đang thay thế giá trị cũ và đó là nó. –

+1

@vaxquis bạn đã đọc nhận xét của tôi trước đây chưa. Câu trả lời rõ ràng phải luôn luôn theo câu hỏi. Người hỏi câu hỏi, anh ta đã đề cập rằng anh ấy muốn thay thế yếu tố đó để có nghĩa là anh ấy có danh sách các phần tử trong đó. bây giờ rõ ràng Sir ??? –

+1

@vaxquis Những điều bạn xem xét, một newbie sẽ biết điều này, vì vậy những vấn đề này không có ý nghĩa gì cả. Vẫn còn tôi đã chỉnh sửa để làm cho u hạnh phúc :) –

6
public void setItem(List<Item> dataEntity, Item item) { 
    int itemIndex = dataEntity.indexOf(item); 
    if (itemIndex != -1) { 
     dataEntity.set(itemIndex, item); 
    } 
} 
+1

Điều này sẽ chỉ hoạt động nếu mục mới bằng với mục cũ theo phương thức equals(), phải không? – spikemanuk

Các vấn đề liên quan