2010-10-13 39 views
5

Tôi đã kế thừa một nhóm và một cơ sở mã (Java).Bạn đề xuất thư viện Bộ sưu tập Java nào?

Cơ sở mã sử dụng rất nhiều vòng lặp for each rõ ràng. Tôi muốn thay thế chúng (chỉnh sửa: trong mã tương lai) với một cái gì đó như Commons Bộ sưu tập Transformers và Predicates và phương pháp thu thập và biến đổi của nó.

Tuy nhiên, Bộ sưu tập chung không phải là chung chung. Phần còn lại của cơ sở mã của tôi, bất cứ điều gì khác nó thiếu, là, và tôi không muốn giới thiệu rất nhiều đúc.

Vì vậy, tôi đang xem Bộ sưu tập của Commons với Generics (http://sourceforge.net/projects/collections/) và tại Guava (trước đây là Google Collections) (http://code.google.com/p/guava-libraries /).

Câu hỏi một: là một trong hai hoặc cả hai thư viện đó thường được công nhận là an toàn để sử dụng sản xuất? Bạn có sử dụng hoặc trong sản xuất?

Câu hỏi hai: trong hai câu hỏi, bạn đề xuất điều gì? Câu trả lời từ bất cứ ai đã sử dụng hoặc là tuyệt vời, câu trả lời từ bất cứ ai đã sử dụng cả hai tốt hơn!

Cuối cùng, nhóm của tôi bao gồm sự kết hợp giữa các nhà thầu từ trung cấp đến cao cấp và nhân viên ở cấp trung học cơ sở trong Java (chỉnh sửa: nhưng với kinh nghiệm nhiều năm trong lập trình không phải OO). Vì vậy, tôi không muốn giới thiệu nhiều hơn một thư viện bộ sưu tập, và tôi muốn một trong đó sẽ không quá khó khăn cho bất kỳ nhóm của tôi để sử dụng.

Cảm ơn!

Chỉnh sửa: Tôi muốn thay thế vòng lặp rõ ràng bởi vì số lượng bản mẫu bị che khuất và áp đảo mã kinh doanh thực tế. Tôi đã có các chức năng gọi vòng lặp lồng nhau với vòng lặp lồng nhau, tất cả để làm những việc đó là một lớp lót. Với phần giới thiệu và đào tạo phù hợp, tôi cảm thấy nhóm của tôi sẽ tìm thấy cách tiếp cận Bộ sưu tập/Biến áp/Dự đoán rõ ràng hơn, rõ ràng hơn, nhanh hơn để viết và dễ đọc hơn.

+1

Bộ sưu tập thực sự cần phải đưa ra phiên bản Java5 nếu họ không muốn mọi người chuyển sang tiếng ổi. Tôi không có nhiều tâm trí không có generics và varargs trong Commons Lang, nhưng đối với một thư viện bộ sưu tập, nó là điều cần thiết. – Thilo

+3

Liên quan: [Bộ sưu tập của Bộ sưu tập với Bộ sưu tập của Google] (http://stackoverflow.com/questions/1444437/apache-commons-vs-google-collections). IMO thực tế. Ngoài ra, hãy xem [this movie] (http://www.youtube.com/watch?v=ZeO_J2OcHYM). – BalusC

+2

Bạn có đang thay thế mã vì mục đích thay thế mã hoặc vì có điều gì đó thiếu trong kiểu 'cho mỗi' bạn có ngày hôm nay không? –

Trả lời

4

Tôi sử dụng bộ sưu tập của Google trong sản xuất và chưa bao giờ gặp sự cố. Làm cho bạn muốn java có con trỏ chức năng, nhưng ông thiết kế cũng được nghĩ ra. Ngay cả những điều nhỏ bé như Lists.newArrayList trở thành cách thức tiêu chuẩn để tạo danh sách mới.

+0

"Làm cho bạn muốn Java có các con trỏ hàm". Java 8. Ngón tay vượt qua. – Thilo

+1

@Thilo: có thể là Java 10. Có thể. –

+0

JDK7 (bây giờ 8, tôi đoán) "bao gồm một gói mới, java.dyn, có chứa các lớp liên quan đến hỗ trợ ngôn ngữ động trong nền tảng Java.Một trong những lớp trong gói là MethodHandle. Một phương thức xử lý là một đối tượng đơn giản của loại java.dyn.MethodHandle ẩn chứa một tham chiếu đến một phương thức JVM. Một phương thức xử lý có thể gọi được, giống như một tham chiếu được đặt tên cho một phương thức. " http://www.oracle.com/technetwork/issue-archive/2010/10-may/o30java-099612.html – Thilo

2

Dường như bạn không tìm kiếm thư viện Bộ sưu tập, mà là thư viện để làm việc với các bộ sưu tập hiện có theo cách chức năng.

Tôi đã tự mình viết một thư viện, nhưng nó không phải là nguồn mở (nó chỉ được sử dụng nội bộ trong công ty của tôi), và nó có thể không được thiết kế tốt nhất.

Thư viện có cùng mục tiêu có vẻ đầy hứa hẹn: lambdaj. Tôi đã không sử dụng nó bản thân mình, nhưng tôi nghĩ rằng tôi sẽ không viết thư viện của tôi nếu tôi đã nhận thức được sự tồn tại của lambdaj, tại thời điểm đó.

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