如果我需要遍历列表并尝试将元素分组在一起,那么最好的方法是什么?
例如,我们有以下对象要循环通过:
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。