如何将员工从列表中随机分配到4个不同的组

0 java arrays random

是的,很抱歉,造成混乱!我的业务需求是:一个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)

Sam*_*ron 5

怎么样/sf/answers/1522069811/?

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。每个人随机包含雇员。