Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将arraylist排序为多样而不是相似?_Java_Arraylist - Fatal编程技术网

Java 如何将arraylist排序为多样而不是相似?

Java 如何将arraylist排序为多样而不是相似?,java,arraylist,Java,Arraylist,因此,对于我的一个项目,我必须根据姓氏为游戏组建团队,他们应该尽可能多样化,因此,如果没有其他团队没有“史密斯”,那么“史密斯”家族将只会与另一个“史密斯”家族加入同一个团队 我得到了一个包含参与者名单的ArrayList,其中包括参与者的姓氏。我只需要弄清楚如何对其进行排序,使ArrayList具有多样性,我只需要遍历ArrayList并将它们分配给团队 ArrayList<Participant> list = tourney.getUnattatchedParticipants

因此,对于我的一个项目,我必须根据姓氏为游戏组建团队,他们应该尽可能多样化,因此,如果没有其他团队没有“史密斯”,那么“史密斯”家族将只会与另一个“史密斯”家族加入同一个团队

我得到了一个包含参与者名单的ArrayList,其中包括参与者的姓氏。我只需要弄清楚如何对其进行排序,使ArrayList具有多样性,我只需要遍历ArrayList并将它们分配给团队

ArrayList<Participant> list = tourney.getUnattatchedParticipants();
//need to sort list somehow
ArrayList list=tourney.getUntatchedParticipants();
//需要对列表进行排序吗

我会这样处理你的问题

  • 创建一个保存所有团队的数据容器。由于我们不确定将有多少个团队,因此我将使此数据容器成为动态的(例如,
    ArrayList
  • 我将开始对参与者重复您的
    ArrayList
    ,并且对于每个参与者,我将检查第1组是否包含具有相似(相同或部分姓氏)姓氏的参与者
  • 如果有,请检查第2组
  • 如果我们到达最后一个团队,并且它已经包含一个类似于最后一个团队的partpant,那么我们将创建另一个团队
  • 也许是这样的:

    public ArrayList divideParticipantsIntoTeams(ArrayList参与者)
    {
    ArrayList groups=new ArrayList();//这将保留我们的组
    groups.add(newarraylist());//我们创建第一个组。
    //我们迭代所有给定的参与者
    参与者。forEach(参与者->
    {
    boolean contains=true;//显示组中是否已经有它的变量
    //我们迭代所有的组并检查它们是否包含它
    用于(ArrayList组:组)
    {
    //检查是否发现有相似姓氏的参与者
    contains=集装箱运输工具(组、参与者);
    //如果它不包含这样的参与者,那么我们将其添加到组中,然后退出循环。
    如果(!包含)
    {
    添加组(参与者);
    打破
    }
    }
    //如果我们迭代所有的组,完成后它们都包含一些类似的参与者,那么创建一个新的组。
    如果(包含)
    {
    添加(新的ArrayList());
    ArrayList newGroup=groups.get(groups.size()-1);//获取刚刚创建的组
    newGroup.add(参与者);//将参与者添加到其中
    }
    });
    返回组;
    }
    公共布尔容器参与者(ArrayList组,参与者)
    {
    对于(参与者组参与者:组)
    {
    //这可能需要一些微调,具体取决于您想要的方式。
    if(groupParticipant.getLastName().contains(participant.getLastName()))
    {
    返回true;
    }
    }
    返回false;
    }
    
    您尝试过什么?如果参与者在付款场地站在你面前,你将如何处理将他们分成小组的问题?你能把它翻译成代码吗?