Commit 2d0cf026 authored by licc's avatar licc

优化方案查询

parent 12c10f66
......@@ -144,5 +144,4 @@ public class Volunteer implements Serializable {
private Date queryTime;
}
......@@ -711,23 +711,49 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
*/
private List<Volunteer> getVolunteerList(List<Volunteer> list, Integer total) {
List<Volunteer> result = new ArrayList<>();
result.add(list.get(0));
List<Volunteer> otherList = new ArrayList<>();
List<String> grades = new ArrayList<>();
grades.add(list.get(0).getLowestMark());
for (Volunteer volunteer : list) {
if (!grades.contains(volunteer.getLowestMark()) && result.size() <= total) {
grades.add(volunteer.getLowestMark());
result.add(volunteer);
Map<String, List<Volunteer>> map = list.stream().collect(Collectors.groupingBy(Volunteer::getLowestMark
));
for (Map.Entry<String, List<Volunteer>> entry : map.entrySet()) {
List<Volunteer> volunteerList = entry.getValue();
if (volunteerList.size() > 2) {
result.addAll(volunteerList.subList(0, 2));
otherList.addAll(volunteerList.subList(2, volunteerList.size()));
} else {
otherList.add(volunteer);
result.addAll(volunteerList);
}
if (result.size() >= total) {
return result.subList(0, total);
}
}
if (result.size() < total) {
int number = total - result.size();
List<Volunteer> volunteers = otherList.subList(0, number);
result.addAll(volunteers);
List<Volunteer> otherListB = new ArrayList<>();
Map<String, List<Volunteer>> mapB = otherList.stream().collect(Collectors.groupingBy(Volunteer::getLowestMark
));
for (Map.Entry<String, List<Volunteer>> entry : map.entrySet()) {
List<Volunteer> volunteerList = entry.getValue();
if (volunteerList.size() > 2) {
result.addAll(volunteerList.subList(0, 2));
otherListB.addAll(volunteerList.subList(2, volunteerList.size()));
} else {
result.addAll(volunteerList);
}
if (result.size() >= total) {
return result.subList(0, total);
}
}
if (result.size() < total) {
int number = total - result.size();
List<Volunteer> volunteers = otherListB.subList(0, number);
result.addAll(volunteers);
}
}
return result;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment