Làm cách nào để giới hạn groupBy theo từng mục nhập?Nhóm giới hạnBởi trong Java 8
Ví dụ (dựa trên ví dụ này: stream groupBy):
studentClasses.add(new StudentClass("Kumar", 101, "Intro to Web"));
studentClasses.add(new StudentClass("White", 102, "Advanced Java"));
studentClasses.add(new StudentClass("Kumar", 101, "Intro to Cobol"));
studentClasses.add(new StudentClass("White", 101, "Intro to Web"));
studentClasses.add(new StudentClass("White", 102, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 106, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 103, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 104, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 105, "Advanced Web"));
Phương pháp này trở lại nhóm đơn giản:
Map<String, List<StudentClass>> groupByTeachers = studentClasses
.stream().collect(
Collectors.groupingBy(StudentClass::getTeacher));
gì nếu tôi muốn giới hạn những bộ sưu tập trở lại? Giả sử tôi chỉ muốn các lớp N đầu tiên cho mỗi giáo viên. Nó được hoàn thiện bằng cách nào?
Ý của bạn là gì trước tiên ?, Bạn có nghĩa là các lớp có số lớp thấp nhất, tên thấp nhất ASCIIBetically hoặc bất kỳ lựa chọn ngẫu nhiên nào của N lớp. Lưu ý: tập hợp các lớp có thể không có thứ tự. –
@PeterLawrey Bạn nói đúng, tôi không đề cập đến thứ tự đó, nhưng nếu chúng ta muốn một giải pháp toàn diện hơn và tổng quát hơn - bạn sẽ thấy hạnh phúc nếu bạn thêm một ví dụ sắp xếp (theo một trong các trường) – yossico