Gần đây tôi có cần phải thực hiện trường hợp 'trường hợp đặc biệt' nếu chỉ có một phần tử trong bộ sưu tập. Kiểm tra ...size() == 1
và lấy bằng ...iterator.next()
trông có vẻ xấu xí vì vậy tôi đã tạo ra hai phương pháp trong nhà brew Collections lớp:Kiểm tra xem chỉ có một phần tử tồn tại bằng cách sử dụng Guava
public class Collections {
public static <T> boolean isSingleValue(Collection<T> values) {
return values.size() == 1;
}
public static <T> T singleValue(Collection<T> values) {
Assert.isTrue(isSingleValue(values));
return values.iterator().next();
}
}
Vài ngày trước, tôi phát hiện ra rằng ổi có phương pháp gọi là Iterables.getOnlyElement. Nó bao gồm nhu cầu của tôi và thay thế singleValue
, nhưng tôi không thể tìm thấy kết quả phù hợp cho isSingleValue
. Đó có phải là do thiết kế? Có đáng để đặt yêu cầu tính năng để có phương thức Iterables.isOnlyElement
không?
CHỈNH SỬA: Vì có vài upvotes tôi quyết định mở nâng cao trên ổi - issue 957. Độ phân giải cuối cùng - 'WontFix'. Các lập luận rất giống với những gì Thomas/Xaerxess cung cấp.
Đây không phải là rõ ràng, những gì "Tôi sẽ để giải quyết" nghĩa là gì? Bạn đang nói rằng đây là một giải pháp, hoặc rằng bạn đang làm việc về vấn đề này? –
Đây là giải pháp, đối với tôi. – Falci