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

时间:2020-08-14 15:32:18

标签: java java-7

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

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

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。

0 个答案:

没有答案