微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

迭代时从列表中删除多个元素

如何解决迭代时从列表中删除多个元素

如果我需要遍历列表并尝试将元素分组在一起,那么最好的方法是什么?

例如,我们有以下对象要循环通过:

People
  |---Jimmy
  |     -Country: Canada
  |---Johnny
  |     -Country: Ireland
  |---Vinny
  |     -Country: Italy
  |---Tommy
  |     -Country: Ireland
  |---Wendy
  |     -Country: Canada

我需要遍历每个人,并与同一个国家的人组成一个小组。

例如,它以Jimmy开头,遍历列表以查找加拿大的任何人,只有Wendy与同一个国家/地区匹配,因此他们都被归为一组。迭代到下一个人时,我们不想为Wendy经历相同的过程(因为她已经被分组)。所以我们需要将她从原始列表中删除

我读到迭代器最适合从活动的迭代列表中删除元素。但是,这只会删除当前元素。还有其他建议吗?我在想一个while循环,然后是一个for循环,该循环进行迭代以匹配。

例如:

while (!originalPersonList.isEmpty()) {
  ArrayList<Person> newGroup = new ArrayList<Integer>();
  List<Integer> indexToRemove = new ArrayList<Integer>();
  newGroup.add(0);
  indexToRemove.add(0);
  for (int i=1; i < originalPersonList.size(); i++) {
    if (originalPersonList.get(0).getCountry() == originalPersonList.get(i).getCountry()) {
       indexToRemove.add(i);
       newGroup.add(i);
    }
  }
  originalPersonList.removeAll(indexToRemove);
}

这是我要去的方向,但是我觉得那里有一个更优雅的解决方案。

道歉-我觉得我应该在一开始就强调一下。我只能使用Java 7。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。