我有一个 Person 数组,有名字和薪水的吸气剂和吸气剂。
ArrayList<Person> persons = new ArrayList<>();
现在我需要在一个数组中找到相同的名字,如果是这样,将一个工资加到另一个并删除它的重复项。
我已经试过了
for(Persons per : persons) {
if(per.getName().equals(per.getName()))
{
per.setSalary(per.getSalary()+per.getSalary())
persons.remove(per)
}
}
但这显然行不通。我该怎么做?
这个很棘手。您首先必须遍历每个实例并将其与除自身之外的每个实例进行比较。接下来,您必须在迭代时从列表中删除某些内容。
在这里,我有一个简单的 for 循环(它可以在 ArrayList 等情况下工作,但在 LinkedList 之类的情况下,您必须有一个不同的迭代器)
在循环中,我遍历列表中的其余元素并检查它们是否是不同的对象实例,但具有相同的名称。如果情况属实,则此人将从列表中删除。
for (int i = 0; i < persons.size(); i++)
{
Person per1 = persons.get(i);
for (ListIterator<Person> iter = persons.listIterator(i); iter.hasNext(); )
{
Person per2 = iter.next();
if (per1 != per2 &&
per1.getName().equals(per2.getName()))
{
per1.setSalary(per1.getSalary() + per2.getSalary());
iter.remove();
}
}
}
我想这是最容易阅读的,它不会改变对象引用:D
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句