Tôi có một cấu trúc như thếCalling nhiều phương pháp của nhiều đối tượng nhiều lần mỗi giây
abstract Class Entity {
//some variables...
//some methods ...
public abstract void render(Graphics g);
}
Thats phụ huynh ..Now Tôi có 3 đứa con ..
Class A extends Entity{}
Class B extends Entity{}
Class C extends Entity{}
Mỗi lớp có một số khác nhau công cụ làm render .One là ví dụ vẽ vòng tròn màu vàng, văn bản màu xanh lá cây thứ hai và thứ ba là hiển thị hình ảnh.
Nhưng ... có một điều.
Class A have List<B>...
Class B have List<C>...
Một Entity có ví dụ 10 Bs ... và mỗi B đã 20 Cs ... Vì vậy, bây giờ .. Tôi có một phương pháp và việc này là làm cho 60x mỗi giây .. Và tôi phải gọi mỗi làm phương pháp từ mọi đối tượng.
Vì vậy, tôi có một cái gì đó như thế này
for(A a : listOfAs){
for(B b : listOfBs){
for(C c : listOfCs){
c.render(g);
}b.render(g);
}a.render(g);
}
Bây giờ nếu bạn tưởng tượng tôi có nhiều đối tượng như thế và tôi gọi phương thức 60x này mỗi giây ... Tôi thấy thực hành thực sự ... thực sự tồi tệ này. Tôi không biết làm thế nào để giải quyết điều này tốt hơn hay như vậy ... Tôi không nghĩ rằng điều này cho mỗi vòng lặp thực sự là giải pháp tốt nhất hay không. Bất cứ ai có ý tưởng?
Tôi đã suy nghĩ về việc thực hiện các con như thế:
Entity x = new A(); ...
Entity y = new B(); ...
và như vậy nhưng một số các lớp học có phương pháp khác mà phải được looped như thế và tôi không thể gọi họ là từ cha mẹ.
Đối với phương thức hiển thị ... Chỉ cần thực tế là bạn phải lặp lại nhiều thứ nhiều lần trong một khoảng thời gian ngắn trong một thời gian dài.
Tôi không thể tiến bộ thông qua việc này ... Tôi bị kẹt ở đây một thời gian dài và tôi không chắc chắn cách giải quyết vấn đề này.
Tôi cảm thấy như Lambdas sẽ nhanh hơn ở đây để lặp lại vì vòng lặp forested lồng nhau sẽ xảy ra 'listOfAs.count' *' listOfBs.count' * 'listOfCs.count' lần trong khi lambda được thực hiện đúng với một số dạng hashjoin hoặc bên trong tham gia có thể làm điều đó trong 'listOfAs.count' +' listOfBs.count' + 'listOfCs.count' lần. Tôi sẽ viết bằng chứng của nó nhưng điều đó sẽ không trả lời câu hỏi của bạn. – Adam
Điều này nghe có vẻ giống như một trường hợp để lần đầu tiên hiển thị các thực thể của bạn thành một hình ảnh tạm thời, sau đó tô màu sơn/paintComponent ... Ngoài ra, bạn thực sự không cần phải hiển thị 60x giây; của mắt chỉ tốt cho khoảng 24x – ControlAltDel
@ Adam Tôi không chắc chắn những gì bạn đang đề cập đến, nhưng tôi không thuyết phục mà không có một lời giải thích tốt tôi sợ! Có một số đối tượng để lặp qua; không có số lượng tham gia có thể làm giảm số lượng đó, chắc chắn? Bản năng của tôi sẽ thay vào đó để suy nghĩ về việc sử dụng đồng thời. Một tối ưu hóa khác có thể là để tìm ra các điểm ảnh nào sẽ được vẽ lại và chỉ vẽ giá trị cuối cùng, mặc dù chi phí có thể sẽ vượt quá lợi ích. – Oly