是的,很抱歉,造成混乱!我的业务需求是:一个Employee对象,其中包含一个雇员列表,每个雇员都有groupNumber(1-4);我希望员工在包括他们自己在内的所有其他团队中获得经验。在每个小组中,我希望至少看到来自不同小组的1名雇员(理想情况是,在来自不同小组的新产生的小组中有4名雇员)。下面的代码正在执行随机订单,我该如何使用上面的条件。感谢您的任何建议。
public class EmployeeTest {
public static void main(String[] args) {
Random random = new Random();
int group_num = random.nextInt(30);
int max = 0;
if(max > 4) {
group_num = 1;
ArrayList<Employee> emps = new ArrayList();
emps.add(new Employee("Tom", "Technology", 56, 34, 46, 23));
emps.add(new Employee("Nick", "Technology", 65, 33, 21, 23));
emps.add(new Employee("Jerry", "Technology", 56, 34, 46, 23));
emps.add(new Employee("Janet", "Technology", 56, 34, 46, 23));
emps.add(new Employee("Chitra", "Trading", 12, 54, 46, 23));
emps.add(new Employee("Sally", "Trading", 16, 64, 46, 23));
for(Employee e : emps) {
// Random random = new Random();
// int group_num = random.nextInt(30);
// int max =0;
// if(max > 4) {
// group_num = 1;
}
System.out.println("Employee | identifier: " + e.getUnicIdentifier()
+ ", department: " + e.getDepartment()
+ ", texh_exp: " + e.getTech_exp()
+ " , trade_exp: " + e.getTrade_exp()
+ " , op_exp: " + e.getOp_exp()
+ ", shared_exp: " + e.getShared_exp()
+ ", group_num: " + group_num);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Collections.shuffle(emps);
Run Code Online (Sandbox Code Playgroud)
然后将其分成4个连续的组。
这样可以将它们分成4组
int nGroups = 4;
final AtomicInteger counter = new AtomicInteger();
final Collection<List<Employee>> allGroups = emps.stream()
.collect(Collectors.groupingBy(it -> counter.getAndIncrement() % nGroups))
.values();
Run Code Online (Sandbox Code Playgroud)
allGroups 的大小为4。每个人随机包含雇员。
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |